RoutingError en la carpeta JavaScript después de actualizar desde Rails 3.1 a Rails 3.2

StackOverflow https://stackoverflow.com/questions/9363800

  •  28-10-2019
  •  | 
  •  

Pregunta

Acabo de actualizar a Rails 3.2 y comencé a obtener errores como este:

Started GET "/javascripts/application.js?body=1" for 127.0.0.1 at 2012-02-20 23:25:10 +0800

ActionController::RoutingError (No route matches [GET] "/javascripts/application.js"):
  actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.1) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call'
  railties (3.2.1) lib/rails/engine.rb:479:in `call'
  railties (3.2.1) lib/rails/application.rb:220:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
  /home/alex/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'


  Rendered /home/alex/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.8ms)

Lo mismo para post.js, page.js, etc ... pero todos estos archivos están en el assets/javascripts carpeta.

¿Qué tengo que hacer exactamente para solucionar esto?

Así es como los incluyo:

 <%= javascript_include_tag "application" %>

Application.RB:

require File.expand_path('../boot', __FILE__)

require 'rails/all'

require "sprockets/railtie"

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

module Sandbox3Devise
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Custom directories with classes and modules you want to be autoloadable.
    # config.autoload_paths += %W(#{config.root}/extras)

    # Only load the plugins named here, in the order given (default is alphabetical).
    # :all can be used as a placeholder for all plugins not explicitly named.
    # config.plugins = [ :exception_notification, :ssl_requirement, :all ]

    # Activate observers that should always be running.
    # config.active_record.observers = :cacher, :garbage_collector, :forum_observer

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Configure the default encoding used in templates for Ruby 1.9.
    config.encoding = "utf-8"

    # Configure sensitive parameters which will be filtered from the log file.
    config.filter_parameters += [:password]

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets
    config.assets.version = '1.0'
  end
end

desarrollo.RB:

Sandbox3Devise::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # In the development environment your application's code is reloaded on
  # every request.  This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

  config.action_mailer.default_url_options = { :host => 'localhost:3000' }
end
¿Fue útil?

Solución

¿De qué versión actualizó? Rails 3.1 introdujo el tubería de activos, una nueva forma de organizar activos (imágenes, hojas de estilo, javascripts, entre otros). Parece que tiene que hacer la transición: la guía vinculada anteriormente es un buen lugar para comenzar.

** En el config/application.rb, es la línea require "sprockets/railtie" presente ? Si no, debe agregarlo.

** (Segunda edición): entonces en lugar de javascripts/application.js?body=1, Deberías assets/application.js?body=1. Esto se puede configurar con config.assets.prefix = "/some_other_path". Sin embargo, no parece que haya cambiado en los archivos que pegó, por lo que esto aún podría no serlo, y en este caso ... me rindo. :pags

Otros consejos

Lamento agregar una respuesta a esta vieja pregunta, es principalmente para el beneficio de aquellos (como yo) que tropezarán con este hilo.

He tenido este problema también. No actualicé, comencé mi aplicación como una aplicación Rails3 y después de un tiempo, este tipo de problema ocurrió. Creo que la causa fue cuando comencé a jugar con gemas, como faye, bootstrap-wysihtml5, etc. que requirieron referencias jQuery entre los archivos Application.js y ApplicAion.css. (Así es como aparece en mis registros de control de versiones)

De todos modos, para resolver el problema, acabo de crear una nueva aplicación Rails y copié la aplicación, la configuración, el DB y las gemas. Esto resolvió cada problema que el servidor Rails estaba registrando, por lo que podría ser un error con la tubería de activos. Incluí el require "sprockets/railtie"Línea en Application.RB en buena medida, como se sugirió anteriormente también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top