Hatena::ブログ(Diary)

くろまほうさいきょうでんせつ RSSフィード

2012/06/22 (金)

herokuでbootstrap入れたらActionView::Template::Error ('twitter/bootstrap.less' wasn't found.


twitter bootstrap railsを使ったら職が見つかり彼女も出来て背も3センチ伸びました。
↑が親切すぎたので何も考えずにやってたらherokuでエラーがでてハマった話。

twitter-bootstrap-rails入れてherokuにデプロイしたらエラーが出る

$ git push heroku master
$ heroku open
$ heroku logs
2012-02-28T12:11:12+00:00 app[web.1]: Completed 500 Internal Server Error in 205ms
2012-02-28T12:11:12+00:00 app[web.1]: 
2012-02-28T12:11:12+00:00 app[web.1]: ActionView::Template::Error (couldn't find file 'twitter/bootstrap'
2012-02-28T12:11:12+00:00 app[web.1]:   (in /app/app/assets/stylesheets/application.css:6)):
2012-02-28T12:11:12+00:00 app[web.1]:     5:     %meta{:charset => "utf-8"}

原因

Gemfileのgroup :assetsに追加します。
-------------------------------
cd tbrsample
vim Gemfile
-------------------------------
gem "twitter-bootstrap-rails"
-------------------------------

のところで、group :assetsの中じゃなくて外に指定しないといけなかったぽい。

こうじゃなくて

# assets用のgem、デフォルトでは本番で不要となる
group :assets do
  # ・・・
  gem 'twitter-bootstrap-rails'
end

 ↓
こう

gem 'twitter-bootstrap-rails'

# assets用のgem、デフォルトでは本番で不要となる
group :assets do
  # ・・・
end

まとめ

本家のREADMEも読んだほうがいい。

issuesにあった。
https://github.com/seyhunak/twitter-bootstrap-rails/issues/123

2012/06/15 (金)

herokuにrailsアプリをデプロイする(Error H10 ってなに;;)


f:id:calpo:20120615220409p:image:w360

railsによるアジャイルWebアプリケーション開発第4版を読んだので早速herokuでアプリでも・・・
と思ったらRubyもrailsも初心者で結構つまづいたのでメモ。

herokuへのサインアップ等は終わってるものとします。
Hello Worldまでは以下が参考になりました。
http://d.hatena.ne.jp/ruedap/20110128/ruby_heroku_sinatra_hello_world

まずはRailsアプリを普通に用意する

memberlist というアプリで、userテーブルを作って、scaffoldでCRUDできるところまで作ります。

アプリ作成
$ mkdir ~/projects/ruby
$ cd ~/projects/ruby
$ rails new memberlist

scaffold でユーザーテーブルともろもろコード生成
$ cd memberlist
$ rails g scaffold user code:string name:string
$ rake db:migrate

rootを設定しておく

config/routes.rb

root :to => 'users#index'

$ rm public/index.html

(既にgit initされてる場合は git rm public/index.html)

ローカルで確認

http://localhost:3000/ にアクセスして「Listing users」とか出てればOK。

heroku にデプロイ

git にする
$ git init
$ git ci -am "initial commit"

とりあえずデプロイしてみる

heroku create 時にアプリ名を指定することも出来ます。

$ heroku create
$ git push heroku master
$ heroku rake db:migrate
$ heroku open

Application Error となる

ブラウザでherokuのアプリが表示されるがApplication Errorとなっている。

$ heroku logs
2012-06-15T12:08:37+00:00 heroku[router]: Error H10 (App crashed) -> GET morning-sword-1974.heroku.com/ dyno= queue= wait= service= status=503 bytes=

Error H10 謎のエラー。

対処

本番はassetsとかのプリコンパイルが必要

heroku rake assets:precompire とかの方法もあるらしいが、とりあえずライブコンパイルを有効に。

config/environments/production.rb

config.assets.compile = true

false -> true に変更。

herokuにJS実行環境が無い

gem入れる。

Gemfile

gem 'therubyracer'

herokuはsqlite3じゃなくてPostgreSQL

config/database.yml は書き換えなくても勝手にPostgreSQL使うらいい。
gemを追加しておく。

Gemfile

gem 'pg'

改めてデプロイ

bundle install するとGemfile.lockが更新される。

$ bundle install
$ git add .
$ git ci
$ git push heroku master
$ heroku rake db:migrate
$ heroku open

これでheroku上でも「Listing users」が見えてるはずです。

結局数行修正するだけで良かったんだけど、herokuもRubyもrailsも全部初心者だったので結構辛かった。
Rubyの文化なのか、すぐにバージョンが上がってちょっと前の情報通りに行かないとかがよくあって大変。