2012-04-08 12 views
9

Rails 3.1 activos no resuelven el problema

que tienen una aplicación Rails 3.0.4, que puedo actualizar a 3.1.4 siguientes instrucciones de Railscast video: "Upgrading to rails 3.1".

Ahora tengo problemas con activos porque no se resuelven, dando mensajes de registro del servidor de la siguiente manera:

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"): 

Estos archivos están en assets directorio:

$ ls app/assets/*/application* 
app/assets/javascripts/application.js app/assets/stylesheets/application.css 

y contiene esto:

$ 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 . 
*/ 

Supongo que todo está configurado. Aquí pongo algunos trozos de archivos:

  • Gemfile, se encuentran bienes gemas requeridas:

    group :assets do 
        gem 'sass-rails', '~> 3.1.3' 
        gem 'coffee-rails', '~> 3.1.0' 
        gem 'uglifier' 
    end 
    
  • application.rb, tiene activos habilitados:

    config.assets.enabled = true 
    config.assets.version = '1.0' 
    
  • development.rb:

    config.assets.compress = false 
    config.assets.debug = true 
    
  • finalmente ... application.html.erb diseño:

    <%= stylesheet_link_tag 'application' %> 
    <%= javascript_include_tag 'application' %> 
    

Etapa

Ahora estoy en el desarrollo medio ambiente.

pruebas

  1. Si solicito http://localhost:3000/assets/images/rails.png, se lanza No route matches [GET] "/assets/images/rails.png", pero el archivo está ahí:

    $ ls app/assets/images/rails.png 
    app/assets/images/rails.png 
    
  2. Luego ejecuto 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 
    

    El n, ejecutar servidor (rails s) y solicitar de nuevo una imagen (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) 
    

Así ¿Qué ocurre?, ¿Estoy haciendo algo mal?

+0

¿Es esto sólo en el modo de producción? ¿Has ejecutado 'bundle exec rake assets: precompile'? Además, ¿tiene la biblioteca de piñones incluida? – pjumble

+0

@pjumble Aún no, ¿Es necesario incluso si estoy en un entorno de desarrollo? – Israel

+4

Supuse que estaba en modo de producción, pero no, en el modo de desarrollo no tiene que precompilar los activos. Si elimina '/ images /' de la URL, ¿funciona la imagen? ('http: // localhost: 3000/assets/rails.png') – pjumble

Respuesta

2

Hasta donde yo sé, todos los activos precompilados se mueven a la carpeta de activos.

Eso significa que el contenido de javascript, las hojas de estilo Y las imágenes se combinarán en localhost:3000/assets.

Así que si usted busca para localhost:3000/assets/images/rails.png debe estar situado en app/assets/images/images/rails.png. para ello el 404.

Para mantener su directorio limpio Sugiero mantener todas sus imágenes en app/assets/images/y el punto a ellos con asset_path('rails.png')

Cuestiones relacionadas