0

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も必要であると示唆していないので、回避策はあるものの、何かがまだ完全に正しく構成されていないのではないかと心配しています。

4

0 に答える 0