Ruby on rails 为什么赢了';我的资产不能投入生产吗?
这是我几年来第一次尝试在不使用EngineYard的情况下将Rails应用程序放在以生产模式运行的服务器上。可能有很多我不记得了。这是版本4.2.5 我不会和卡皮斯特拉诺一起部署,我现在不会经历所有的麻烦。这是我的团队面向内部的应用程序。当我更新一些东西时,我只是从Github中下载代码。很简单 这个应用没有问题。我跑了:Ruby on rails 为什么赢了';我的资产不能投入生产吗?,ruby-on-rails,ruby-on-rails-4,ruby-on-rails-4.2,Ruby On Rails,Ruby On Rails 4,Ruby On Rails 4.2,这是我几年来第一次尝试在不使用EngineYard的情况下将Rails应用程序放在以生产模式运行的服务器上。可能有很多我不记得了。这是版本4.2.5 我不会和卡皮斯特拉诺一起部署,我现在不会经历所有的麻烦。这是我的团队面向内部的应用程序。当我更新一些东西时,我只是从Github中下载代码。很简单 这个应用没有问题。我跑了: rake assets:precompile 但所有资产的收益率都是404。只有我的原始应用程序出现 我现在甚至不想运行Nginx。无论我运行Webrick还是尝试启动Un
rake assets:precompile
但所有资产的收益率都是404。只有我的原始应用程序出现
我现在甚至不想运行Nginx。无论我运行Webrick还是尝试启动Unicorn进程,我都不会得到CSS
然而,所有显示404的文件,我都非常非常清楚地看到:
<app root>/public/assets
/public/assets
Webrick和Unicorn是否出于某种奇怪的原因无法提供这些资产?如果是,那是什么原因呢?我是否需要在一个简单的、面向内部的应用程序上使用Nginx和Passenger进行全面部署
我遗漏了什么?你必须写
$rake assets:precompile RAILS_ENV=production
您还必须将config/initializers/assets.rb文件设置为config\u assets\u precompile=true
也可以试试Rubyracer gem。缺少CSS/JS表明您的资产没有在生产中加载(显然) 修复它的方法是使用
Ruby Doggy
推荐的方法(并在投入生产之前预编译资产),或者使用类似于post receive
钩子的方法来实现同样的效果
<> P>一个重要的考虑因素是你设置的<代码>环境变量< /代码>。我从未使用过engineyard
,但是Heroku
为每个应用程序设置RAILS\u ENV
var:
如果我是您,我会在您的生产环境中设置RACK_ENV
和RAILS_ENV
变量:
EXPORT RAILS_ENV=production
EXPORT RACK_ENV=production
这将设置env vars,这将允许您在推送后调用
rake assets:precompile
,以获取正确的资产。首先,正如其他人所说,请检查您是否正在生产模式下运行?其次,您提到您正在运行WEBrick。config.service\u static\u files
是否设置为true
config.service\u static\u文件将Rails自身配置为服务于静态
文件夹。默认值为true,但在生产环境中处于禁用状态
关闭作为服务器软件(如NGINX或Apache)用于运行
应用程序应该服务于静态资产。与默认值不同
运行时将此设置为true(绝对不推荐!)或
使用WEBrick在生产模式下测试应用程序
4.2.5中生产环境的默认设置为:``config.serve\u static\u files=ENV['RAILS\u serve\u static\u files'].present?```。我没有设置那个环境变量。我一做到,它就起作用了。非常非常感谢你。