自分のログは無くしたので@yuum3のログを引用させて頂きます。

  #  executing "find /home/rails_apps/todo31/releases/20110912141706/public/images /home/rails_apps/todo31/releases/20110912141706/public/stylesheets /home/rails_apps/todo31/releases/20110912141706/public/javascripts -exec touch -t 201109121417.06 {} ';'; true"
    servers: *"176.32.95.168"*
    *176.32.95.168* executing command
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/images'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/stylesheets'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*
###  *err :: 176.32.95.168* find:
###  *err :: 176.32.95.168* `/home/rails_apps/todo31/releases/20110912141706/public/javascripts'
###  *err :: 176.32.95.168* : No such file or directory
###  *err :: 176.32.95.168*

Githubにも載ってましたエラーは無視しても大丈夫そうですが、下記の一行をdeploy.rbに追記すればエラー出なくなります。

# in config/deploy.rb
set :normalize_asset_timestamps, false

現象

Railsを-e productionで立ち上がるとき、或いはcapistrano本番サーバにデプロイしてアクセスする時に、HTTPのStatusは200なのに画像などが表示されない。JavascriptとCSSは問題ない。 発生バージョンはRails 3.1。

解決策

app/tmp/cacheを削除し、rake assets:precompileをもう一回実行。 ブラウザキャッシュを消してリロード。

調査経緯

assets周りの設定やfingerprint(MD5のハッシュ値)の比較など全部チェックしましたが、全然ダメでした。 最後はgithubのこのスレの方法で解決になりました。

問題となったrails applicationはRails 3.1.rc1から作っていたもので、そのままrc4, rc5, stableに更新してきました。githubで議論されたのはrc4からrc5になったときにこのような現象があったようです。恐らくtmp/cacheが変な動きをして手動で削除しない限り古いバージョンのものがずっと残されたかもしれません。

おまけ

Asset Pipelineの周りの設定ファイルを一応貼っておきます。

Githubでのスレ:https://gist.github.com/rails/rails/issues/2299

#ruby #rails3.1 #troubleshooting

確定ではないですが、Rails3.1rcにアップしたらこんなエラーが出ました。

Please install the mysql adapter: `gem install activerecord-mysql-adapter` (mysql is not part of the bundle. Add it to Gemfile.)

解決策

  • database.ymlでmysqlのadapterをmysqlよりmysql2に変更
  • Gemfileにmysql2を追加しbundle installを実行

参考

http://stackoverflow.com/questions/6141276/rails-3-1-0-rc1-mysql-adapter-error http://stackoverflow.com/questions/3467054/problem-with-mysql2-and-rails3-bundler

#rails #ruby #heroku #rails3.1

この前Herokuのドキュメントを見ましたが、まだRails3.0.7しか正式にサポートされているようです。でも実はRails 3.1rcもherokuで実行できますよ。

上記snippetはgistで保管しJavaScriptで表示しています。RSSでご覧の方は見れないと思います。お手数ですが、直接アクセスしてください。

#rails #ruby #rails3.1

Rails3.1.0 beta1をインストールするときにあったトラブルです。

インストール

// 3.1.0 betaに更新
sudo gem install rails --pre

// バージョン確認
rails -v

// ダミープロジェクト作成
rails new railsfoo

// 必要なGemをインストール
cd railsfoo
bundle install

// サーバ起動
rails s

トラブル

ここまで順調でしたが、http://127.0.0.1:3000にアクセスしたときにundefined method `context’ for #<Sprockets::Environment:>のトラブルに会いました。

Sprockets trouble

どうやらこのSprocketsというのがポイントのようです。 ぐぐってみたらgithubでこのようなコメントがありました。

Just to save someone else the 2 minutes waiting for a bundle update sprockets that will fail, beta.2 is required by rails 3.1.0beta1. You want gem ‘sprockets’, ‘2.0.0.beta.2’ in your Gemfile. github https://github.com/rails/rails/issues/453

のようでGemfileに下記を追記し再度bundle update。

gem 'sprockets', '2.0.0.beta.2'

解決〜

rails server running