加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3.1 – 如何使用Rails 3.1和资产管道在Heroku上配

发布时间:2020-12-17 02:35:39 所属栏目:百科 来源:网络整理
导读:安装Resque gem并运行worker后,我的app现在会产生资产管道错误: Sass:SyntaxError:要导入的文件未找到或不可读 我创建了一个新的分支,并将问题缩小到运行Resque工作者.我只改变了三个文件.以下是重现的步骤: 1)将Resque gem添加到Gemfile: gem 'resque'
安装Resque gem并运行worker后,我的app现在会产生资产管道错误:

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)将一个worker添加到Procfile:

web: bundle exec rails server -p $PORT thin
worker: bundle exec rake resque:work

我有一种感觉,问题是工人正试图加载我的所有资产.这是我不想要的,因为它只是一个后台进程.我甚至没有运行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编译期间预编译.在预编译期间加载了环境,但是Heroku没有通过ENV变量. URI解析行由于失败而失败

ENV['REDISTOGO_URL']

没有.这导致资产:预编译rake任务失败.

解决方案是添加:

config.assets.initialize_on_precompile = false

到您的application.rb文件.

这在Rails 3.1.1中可用,当设置为false时,在编译资产时将不再加载环境.大多数时候这是一个安全的选择.

谢谢尼尔指出我正确的方向.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读