Vấn đềRails 3.1 tài sản không giải quyết
Tôi có một Rails 3.0.4 ứng dụng mà tôi nâng cấp lên 3.1.4 hướng dẫn sau đây từ Railscast video: "Upgrading to rails 3.1".
Bây giờ tôi có vấn đề với tài sản vì họ không được giải quyết, cho thông điệp trong nhật ký máy chủ như thế này:
Started GET "/assets/application.css" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.css - 404 Not Found (15ms)
ActionController::RoutingError (No route matches [GET] "/assets/application.css"):
Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (14.3ms)
Started GET "/assets/application.js" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.js - 404 Not Found (35ms)
ActionController::RoutingError (No route matches [GET] "/assets/application.js"):
Những tập tin này trong assets
thư mục:
$ ls app/assets/*/application*
app/assets/javascripts/application.js app/assets/stylesheets/application.css
và chứa nội dung này:
$ cat app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require_self
//= require_tree .
$ cat app/assets/stylesheets/application.css
/*
*= require_self
*= require_tree .
*/
Tôi cho rằng mọi thứ đã được định cấu hình. Ở đây tôi đặt một số khối của tập tin:
Gemfile
, chứa tài sản đá quý cần:group :assets do gem 'sass-rails', '~> 3.1.3' gem 'coffee-rails', '~> 3.1.0' gem 'uglifier' end
application.rb
, có tài sản được kích hoạt:config.assets.enabled = true config.assets.version = '1.0'
development.rb
:config.assets.compress = false config.assets.debug = true
cuối cùng ...
application.html.erb
bố trí:<%= stylesheet_link_tag 'application' %> <%= javascript_include_tag 'application' %>
Stage
Tôi bây giờ trong phát triển môi trường.
thử nghiệm
Nếu tôi yêu cầu
http://localhost:3000/assets/images/rails.png
, nó némNo route matches [GET] "/assets/images/rails.png"
, nhưng tập tin là có:$ ls app/assets/images/rails.png app/assets/images/rails.png
Sau đó, tôi thực hiện
rake assets:precompile
:$ bundle exec rake assets:precompile /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
Các n, thực máy chủ (
rails s
) và yêu cầu một lần nữa một hình ảnh (rails.png
):$ rails s => Booting WEBrick => Rails 3.1.4 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/http/mime_type.rb:101: warning: already initialized constant PDF [2012-04-08 04:53:06] INFO WEBrick 1.3.1 [2012-04-08 04:53:06] INFO ruby 1.9.2 (2012-02-14) [i686-linux] [2012-04-08 04:53:06] INFO WEBrick::HTTPServer#start: pid=16702 port=3000 Started GET "/assets/images/rails.png" for 127.0.0.1 at 2012-04-08 04:53:14 -0500 Served asset /images/rails.png - 404 Not Found (38ms) ActionController::RoutingError (No route matches [GET] "/assets/images/rails.png"): Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (125.2ms)
Vì vậy Có chuyện gì vậy?, Tôi có làm gì sai không?
Đây có phải là duy nhất trong chế độ sản xuất? Bạn có chạy 'bundle exec rake assets: precompile' không? Ngoài ra, bạn có thư viện sprockets bao gồm? – pjumble
@pjumble Chưa, đó có cần thiết ngay cả khi tôi đang trong môi trường phát triển? – Israel
Tôi cho rằng bạn đang ở chế độ sản xuất, nhưng không, trong chế độ phát triển bạn không phải biên dịch trước tài sản. Nếu bạn xóa '/ images /' khỏi URL thì ảnh có hoạt động không? ('http: // localhost: 3000/assets/rails.png') – pjumble