gpt4 book ai didi

ruby-on-rails-3.1 - 如何使用 Rails 3.1 和 Assets 管道在 Heroku 上配置 Resque

转载 作者:行者123 更新时间:2023-12-05 01:30:25 25 4
gpt4 key购买 nike

安装 Resque gem 并运行工作程序后,我的应用程序现在会产生 Assets 管道错误:

Sass:SyntaxError: 要导入的文件未找到或无法读取

我创建了一个新分支并将问题缩小到运行 Resque 工作器。我只更改了三个文件。以下是重现的步骤:

1) 将 Resque gem 添加到 Gemfile:

gem 'resque'

2) 创建 Resque rake 任务:
# lib/resque.rake

require 'resque/tasks'

task "resque:setup" => :environment do
ENV['QUEUE'] = '*'
Resque.before_fork = Proc.new { ActiveRecord::Base.establish_connection }
end

3)在Procfile中添加一个worker:
web: bundle exec rails server -p $PORT thin
worker: bundle exec rake resque:work

我有一种感觉,问题在于工作人员正在尝试加载我的所有 Assets 。我不想要,因为它只是一个后台进程。我什至没有运行 Resque 前端,所以问题与此无关。

最佳答案

罪魁祸首实际上在我的 Resque 初始化程序中:

if Rails.env.staging? || Rails.env.production?
uri = URI.parse ENV['REDISTOGO_URL']
Resque.redis = Redis.new :host => uri.host, :port => uri.port, :password => uri.password
end

Heroku 在 slug 编译期间运行 assets:precompile。在预编译期间,环境已加载,但 Heroku 不会传入 ENV 变量。由于 URI 解析行失败
ENV['REDISTOGO_URL'] 

为零。这导致 assets:precompile rake 任务失败。

解决方法是添加:
config.assets.initialize_on_precompile = false 

到您的 application.rb 文件。

这在 Rails 3.1.1 中可用,当设置为 false 时,编译 Assets 时将不再加载环境。大多数情况下,这是一个安全的选择。

感谢尼尔为我指明了正确的方向。

关于ruby-on-rails-3.1 - 如何使用 Rails 3.1 和 Assets 管道在 Heroku 上配置 Resque,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9944089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com