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时,在编译资产时将不再加载环境.大多数时候这是一个安全的选择. 谢谢尼尔指出我正确的方向. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |