Ruby on rails 3.1 Rails资产管道在生产环境中不工作?
我最近将一个应用程序从Rails 3.0升级到了3.1。我已按照我所能找到的任何指示启用资产管道,但在生产环境中时总是失败:Ruby on rails 3.1 Rails资产管道在生产环境中不工作?,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我最近将一个应用程序从Rails 3.0升级到了3.1。我已按照我所能找到的任何指示启用资产管道,但在生产环境中时总是失败: <%= javascript_include_tag "application" %> 我在application.rb中尝试了这些设置的变化: 需要文件。展开路径('../boot',文件) #需要“rails/all” 需要“控制器/轨道连接的操作” 要求采取“行动”\u邮递员/railtie 需要“活动资源/railtie” 需要“轨道/测试单元/钢轨
<%= javascript_include_tag "application" %>
我在application.rb中尝试了这些设置的变化:
需要文件。展开路径('../boot',文件)
#需要“rails/all”
需要“控制器/轨道连接的操作”
要求采取“行动”\u邮递员/railtie
需要“活动资源/railtie”
需要“轨道/测试单元/钢轨接头”
如果定义?(捆绑机)
#如果在部署到生产环境之前预编译资产,请使用此行
Bundler.require*Rails.groups(:资产=>%w(开发测试))
#如果您希望在生产中惰性地编译资产,请使用此行
#Bundler.require(:default,:assets,Rails.env)
结束
模块博客
类应用程序
和full production.rb(减去一些注释)
Blog::Application.configure do
config.cache_classes=true
config.consive\u all\u requests\u local=false
config.action\u controller.perform\u caching=true
config.service\u static\u assets=false
config.assets.compress=true
config.assets.compile=false
config.assets.digest=true
config.i18n.fallbacks=true
config.active\u support.deprecation=:notify
结束
我已经运行了rakeassets:precompile
任务
我是否遗漏了任何明显的步骤
编辑:一些其他详细信息:
我的资产位于app/assets
文件夹中app/assets/images
,app/assets/javascripts
,app/assets/stylesheets
,等等
我在我的public/assets
目录中看到生成的文件,其中包含名称和摘要
app/assets/javascripts/application.js
确实会编译成类似于public/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js的东西,它们最终会出现在public
目录中。参见
确保您的资产位于app/assets
文件夹中app/assets/images
,app/assets/javascripts
,app/assets/stylesheets
,等等
执行rake资产:预编译
如果启用,您应该可以看到在app/public/assets
目录中生成的文件,其中包含名称和摘要
app/assets/javascripts/application.js
将编译为/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js
如果资产的命名类似于上面的摘要,Production.rb
应具有以下配置:
# Generate digests for assets URLs
config.assets.digest = true
如果查看网页源代码,您应该会看到类似以下内容:
<script src="/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js" type="text/javascript"></script>
尝试通过转到http://example.com//assets/application-6ec417a53cb2bdb949966a153a61e7b1.js
如果不加载文件,请尝试检查权限和其他日志。链轮未加载
为了删除以前版本rails中的活动记录(这是一个问题),将要求的'rails/all'
替换为
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
这里缺少的是链轮/railtie
谢谢,我在做更改时观看了轨道的铸造。我已经更新了我的答案以解决您的建议。您可以发布您的应用程序.rb
和生产.rb
?我已经在问题中添加了完整的应用程序.rb
和生产.rb
。完全回购:我使用的是RSpec,因此有一个类似的设置,test_单元被注释掉了。我不知道链轮有自己的导轨。非常感谢你这么做。
<script src="/assets/application-6ec417a53cb2bdb949966a153a61e7b1.js" type="text/javascript"></script>
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"