Rails3.2.8で生成したばかりのスケルトンRailsアプリを使用して新しい本番デプロイメントセットアップを構成していますrails new
。開発マシンにapache2とPhusionPassengerを使用して本番環境をセットアップしましたが、これらはすべて正常に機能します。その設定をEC2にプッシュしようとすると、jQueryが見つからないため、アセットのプリコンパイル手順が失敗します。
Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'capistrano'
gem 'jquery-rails'
gem 'haml'
group :assets do
gem 'less-rails'
gem 'uglifier', '>= 1.0.3'
gem 'therubyracer'
gem 'execjs'
end
group :deploy do
gem 'passenger'
end
group :production do
gem 'bigdecimal'
end
の関連ビットdeploy.rb
after "deploy:update_code" do
run "cd #{release_path}; rake assets:precompile RAILS_ENV=production "
end
出力
triggering after callbacks for `deploy:update_code'
* executing "cd /home/ec2-user/BWW/pages/bw-widget/releases/20121017095008; rake assets:precompile RAILS_ENV=production"
servers: ["bww-test"]
[bww-test] executing command
** [out :: bww-test] /usr/bin/ruby1.9 /usr/local/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
** [out :: bww-test]
** [out :: bww-test] rake aborted!
** [out :: bww-test]
** [out :: bww-test] couldn't find file 'jquery'
** [out :: bww-test] (in /home/ec2-user/BWW/pages/bw-widget/releases/20121017095008/app/assets/javascripts/application.js:13)
** [out :: bww-test]
** [out :: bww-test]
** [out :: bww-test] Tasks: TOP => assets:precompile:primary
** [out :: bww-test]
** [out :: bww-test] (See full trace by running task with --trace)
** [out :: bww-test]
** [out :: bww-test] rake aborted!
** [out :: bww-test] Command failed with status (1): [/usr/bin/ruby1.9 /usr/local/bin/rake asset...]
** [out :: bww-test]
** [out :: bww-test] Tasks: TOP => assets:precompile
** [out :: bww-test] (See full trace by running task with --trace)
command finished in 1819ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/ec2-user/BWW/pages/bw-widget/releases/20121017095008; true"
servers: ["bww-test"]
[bww-test] executing command
command finished in 168ms
failed: "sh -c 'cd /home/ec2-user/BWW/pages/bw-widget/releases/20121017095008; rake assets:precompile RAILS_ENV=production'" on bww-test
サーバーを見ると、jQueryを含むバンドルがCapistranoによってインストールされています。
[ec2-user@ip-10-226-122-140 bw-widget]$ find . -name jquery\*
./shared/bundle/ruby/1.9.1/specifications/jquery-rails-2.1.3.gemspec
./shared/bundle/ruby/1.9.1/cache/jquery-rails-2.1.3.gem
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/jquery-rails.gemspec
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/lib/generators/jquery
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/lib/jquery
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/lib/jquery-rails.rb
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/vendor/assets/javascripts/jquery_ujs.js
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/vendor/assets/javascripts/jquery-ui.js
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/vendor/assets/javascripts/jquery.min.js
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/vendor/assets/javascripts/jquery.js
./shared/bundle/ruby/1.9.1/gems/jquery-rails-2.1.3/vendor/assets/javascripts/jquery-ui.min.js
./shared/bundle/ruby/1.9.1/gems/rdoc-3.12/lib/rdoc/generator/template/darkfish/js/jquery.js
実際に1.9.3p0(rvmバージョンではなくyumインストールバージョン)を使用しているときにgemが入っていることに少し戸惑いますがruby/1.9.1
、それが重要かどうかはわかりません。
アップデート
Saidからのコメントに続いて、更新後のタスクを次のように変更しました。
after "deploy:update_code" do
run "cd #{release_path}; bundle exec rake assets:precompile RAILS_ENV=production "
end
しかし、私が読んだどの文書bundle exec
も必要であると示唆していないので、回避策はあるものの、何かがまだ完全に正しく構成されていないのではないかと心配しています。