Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 样式表或JavaScript文件的Rails 404错误_Ruby On Rails_Ruby_Capistrano_Unicorn - Fatal编程技术网

Ruby on rails 样式表或JavaScript文件的Rails 404错误

Ruby on rails 样式表或JavaScript文件的Rails 404错误,ruby-on-rails,ruby,capistrano,unicorn,Ruby On Rails,Ruby,Capistrano,Unicorn,Rails无法在生产环境中加载(404错误)CSS&JS文件,但在开发环境中加载它们没有问题 我使用Capistrano进行部署并运行Rails 3。我的发展道路是/www/myapp,但我的生产道路是/www/myapp/current 应用程序本身似乎工作正常,因此问题似乎与CSS/JS文件无关 我尝试在环境/production.rb中将RAILS\u ROOT变量设置为/www/myapp/current,但没有任何区别,文件仍然无法加载 以下是生产日志中的完整堆栈: Started G

Rails无法在生产环境中加载(404错误)CSS&JS文件,但在开发环境中加载它们没有问题

我使用Capistrano进行部署并运行Rails 3。我的发展道路是/www/myapp,但我的生产道路是/www/myapp/current

应用程序本身似乎工作正常,因此问题似乎与CSS/JS文件无关

我尝试在环境/production.rb中将RAILS\u ROOT变量设置为/www/myapp/current,但没有任何区别,文件仍然无法加载

以下是生产日志中的完整堆栈:

Started GET "/stylesheets/scaffold.css?1280867531" for 98.173.61.21 at 2010-08-04 17:04:05 -0700

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css"):
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/show_exceptions.rb:55:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/rack/logger.rb:14:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/runtime.rb:17:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `block in call'
  <internal:prelude>:10:in `synchronize'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:145:in `call'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:642:in `process_client'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:715:in `block in worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `worker_loop'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:604:in `block (2 levels) in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `fork'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `block in spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `each'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `spawn_missing_workers'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:611:in `maintain_worker_count'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:270:in `start'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:29:in `run'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/bin/unicorn:123:in `<top (required)>'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `load'
  /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `<main>'
Started GET”/stylesheets/scaffold.css?1280867531“用于2010-08-04 17:04:05-0700的98.173.61.21
ActionController::RoutingError(没有与之匹配的路由“/stylesheets/scaffold.css”):
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0.beta4/lib/action\u dispatch/middleware/show\u exceptions.rb:55:in'call'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/rack/logger.rb:14:in'call'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/runtime.rb:17:in'call'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in'block-in-call'
:10:在“同步”中
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in'call'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:145:in'call'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in'method_missing'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:642:in'process_client'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:715:“工作循环中的块”
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in'each'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in'worker_loop'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:604:spawn_missing_workers中的块(2层)
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in'fork'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in“产卵区中的块丢失工人”
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in'each'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in'spawn\u missing\u workers'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:611:在“维护工人计数”中
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:270:in'start'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:29:in'run'
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/bin/unicorn:123:in`'
/usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in'load'
/usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in`'

错误消息看起来您的Rails应用程序正在获取对静态文件的请求。Rails3默认情况下不提供静态文件,因为Web服务器可以做得更好。您应该检查Web服务器的配置。如果请求的公共目录中存在静态文件,则应将其配置为首先查看,如果没有静态文件,则仅将请求转发给Rails应用程序


或者,您也可以在config/environments/production.rb中使用
config.service\u static\u assets=true
启用Rails来服务静态文件。但是,在生产环境中不建议这样做,因为您确实不应该仅仅为了服务静态文件而浪费Rails应用程序的处理资源。最好告诉Web服务器这样做。

我通过运行以下命令修复了此问题:

RAILS_ENV=production rake assets:precompile
参考:


我的环境是
Nginx
+
Unicorn
+
Rails4

我完全忘记了这一点。谢谢你指出这一点。我将nginx配置为查找unicorn,现在它可以完美地工作了。谢谢