Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 为什么赢了';我的资产不能投入生产吗?_Ruby On Rails_Ruby On Rails 4_Ruby On Rails 4.2 - Fatal编程技术网

Ruby on rails 为什么赢了';我的资产不能投入生产吗?

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

这是我几年来第一次尝试在不使用EngineYard的情况下将Rails应用程序放在以生产模式运行的服务器上。可能有很多我不记得了。这是版本4.2.5

我不会和卡皮斯特拉诺一起部署,我现在不会经历所有的麻烦。这是我的团队面向内部的应用程序。当我更新一些东西时,我只是从Github中下载代码。很简单

这个应用没有问题。我跑了:

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?```。我没有设置那个环境变量。我一做到,它就起作用了。非常非常感谢你。