Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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_Ruby On Rails 3_Asset Pipeline_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 重现在生产环境而不是开发环境中发生的资产管道错误?

Ruby on rails 重现在生产环境而不是开发环境中发生的资产管道错误?,ruby-on-rails,ruby,ruby-on-rails-3,asset-pipeline,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Asset Pipeline,Ruby On Rails 3.2,在Rails 3.2.3应用程序中,我遇到了一个错误,在部署到heroku时类似于以下情况:- Started GET "/" for 59.xx.xx.xx at 2012-xx-xx xx:xx:xx +0000 Completed 500 Internal Server Error in 62ms ActionView::Template::Error (style.css isn't precompiled) 因此,事实证明:出于某种原因,样式表没有得到预编译(是的,我尝试了asse

在Rails 3.2.3应用程序中,我遇到了一个错误,在部署到heroku时类似于以下情况:-

Started GET "/" for 59.xx.xx.xx at 2012-xx-xx xx:xx:xx +0000
Completed 500 Internal Server Error in 62ms

ActionView::Template::Error (style.css isn't precompiled)
因此,事实证明:出于某种原因,样式表没有得到预编译(是的,我尝试了assets:precompile)

为了解决这个问题,首先我必须在我的开发框中重现这个错误,这样我就可以知道是什么地方出了问题

因此,我的问题是:


如何在我的机器上重现此问题?

默认情况下,Rails只预编译
application.js
application.css
(以及所有非js/css资产)。如果您希望它预编译另一个文件(如果您在布局中使用
javascript\u include\u tag
等,则需要这样做),则需要将您的文件添加到预编译文件列表中

打开
config/environments/production.rb
,应该有一个注释掉的行,以
config.assets.precompile
开头,上面有一个解释。取消对此行的注释并将其更改为:

config.assets.precompile += %w(stylesheets/style.css)
(如果不是正确的目录,请使用style.css的路径)

若要在开发时复制此内容,您必须修改development.rb,使其具有与production.rb相同的所有资产设置

[编辑]


正如您所发现的,您可以从命令行在另一个环境中启动内置的Rails服务器——但是,除了资产管道设置之外,这还会影响所有内容(类重新加载、数据库连接、电子邮件设置等),因此它有时充其量是欺骗性的(意外的副作用),最坏的情况下是危险的(无意中向用户发送电子邮件)。并不是说它没有用,只是要小心。

默认情况下,Rails只预编译
application.js
application.css
(以及所有非js/css资产)。如果您希望它预编译另一个文件(如果您在布局中使用
javascript\u include\u tag
等,则需要这样做),则需要将您的文件添加到预编译文件列表中

打开
config/environments/production.rb
,应该有一个注释掉的行,以
config.assets.precompile
开头,上面有一个解释。取消对此行的注释并将其更改为:

config.assets.precompile += %w(stylesheets/style.css)
(如果不是正确的目录,请使用style.css的路径)

若要在开发时复制此内容,您必须修改development.rb,使其具有与production.rb相同的所有资产设置

[编辑]


正如您所发现的,您可以从命令行在另一个环境中启动内置的Rails服务器——但是,除了资产管道设置之外,这还会影响所有内容(类重新加载、数据库连接、电子邮件设置等),因此它有时充其量是欺骗性的(意外的副作用),最坏的情况下是危险的(无意中向用户发送电子邮件)。并不是说这没有用,只是要小心。

我能够在本地开发人员机器上运行生产环境,只需在启动服务器时指定环境即可

$ RAILS_ENV=production rails s
=> Booting Thin
=> Rails 3.2.3 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

并且能够重现这个问题。我不知道在rails中在开发和生产环境之间切换是如此简单,我能够在本地开发机器上运行生产环境,只需在启动服务器时指定环境即可

$ RAILS_ENV=production rails s
=> Booting Thin
=> Rails 3.2.3 application starting in production on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

并且能够重现这个问题。我不知道在rails的开发和生产环境之间切换是如此微不足道

rails s-e生产
也会这样做
rails s-e生产
也会这样做