開発環境では問題なく動いていたのに、本番にいれるためのアセットコンパイルをしようとすると下記のエラーが。
[goy@myserver]$ RAILS_ENV=production bin/rake assets:precompile /usr/local/bin/ruby bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets rake aborted! Sprockets::FileNotFound: couldn't find file 'bootstrap-sprockets' (in /deploy/mysite/app/assets/javascripts/application.js:14) /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/context.rb:100:in `resolve' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/context.rb:140:in `require_asset' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/directive_processor.rb:215:in `process_require_directive' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/directive_processor.rb:165:in `block in process_directives' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/directive_processor.rb:163:in `each' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/directive_processor.rb:163:in `process_directives' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/sprockets-2.1.4/lib/sprockets/directive_processor.rb:97:in `evaluate' /deploy/mysite/vendor/bundle/ruby/1.9.1/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
いろいろ調べた結果どうもアセットコンパイル対象のパスにbootstap-sassが入っていないようだ。
irb(main):001:0> Rails.application.config.assets.paths
=> ["/deploy/mysite/app/assets/images", "/deploy/mysite/app/assets/javascripts", "/deploy/mysite/app/assets/stylesheets", "/deploy/mysite/vendor/bundle/ruby/1.9.1/gems/jquery-rails-3.1.2/vendor/assets/javascripts"]
⇒bootstrap-sass がはいってない。
config/environments/production.rb に bootstrap-sassをアセットコンパイルの対象にするように追記。
Rails.application.config.assets.paths << Rails.root.join( "vendor/bundle/ruby/1.9.1/gems/bootstrap-sass-3.3.4.1/assets/javascripts" ).to_s
Rails.application.config.assets.paths << Rails.root.join( "vendor/bundle/ruby/1.9.1/gems/bootstrap-sass-3.3.4.1/assets/stylesheets" ).to_s
# しかしバージョンがハードコードされてしまっているという問題があり。
[goy@myserver]$ RAILS_ENV=production bin/rake assets:precompile /usr/local/bin/ruby bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets [goy@myserver]$
⇒今度はエラーなくコンパイルできた!
いつもはデプロイはcapistranoを使うのでbin/rake assets:precompileを直に実行することはない。
今回のサイトはあまり更新しないのでcapistranoを設定してなかったのだが、capistranoがアセットコンパイルを実行するときにはどうしているのだろう。
実行時にパスを渡すとかするのだろうか。。。
0 件のコメント:
コメントを投稿