【发布时间】:2016-04-03 13:42:13
【问题描述】:
我有一个包含以下内容的 Rakefile:
namespace :geo_data do
desc 'Imports geo data to Heroku'
task :heroku_import => :environment do
system "heroku pg:psql DATABASE -c 'DELETE FROM <table name>' -a <heroku app name>"
# some more stuff...
end
end
每当我运行 rake geo_data:heroku_import 时,它都会在我的 Heroku 命令上崩溃并出现以下错误:
您的 Ruby 版本是 1.9.3,但您的 Gemfile 指定的是 2.2.2
但是,如果我直接从终端窗口中的命令行运行 Heroku 命令 - heroku pg:psql DATABASE -c 'DELETE FROM <table name>' -a <heroku app name>,它可以正常工作。
因此,system 命令似乎使用的是不同版本的 Ruby。
有趣的是,据我所知,我的机器上什至没有安装1.9.3。这是rvm list 的输出:
rvm rubies
ruby-2.0.0-p598 [ x86_64 ]
ruby-2.2.0 [ x86_64 ]
=* ruby-2.2.2 [ x86_64 ]
# => - current
# =* - current && default
# * - default
根据该输出,我没有安装 1.9.3,并且 2.2.2 被设置为我当前的和默认 Ruby 版本。
我确定 system 使用的是不同版本的 Ruby 是否正确,还是我还缺少其他东西?如果它使用不同的版本,我怎样才能让它使用2.2.2(或者最好无论我的默认设置是什么)?
更新
这是我的 Gemfile 的内容:
source 'https://rubygems.org'
ruby '2.2.2'
gem 'rails', '4.2.3'
gem 'rails-api'
gem 'spring', :group => :development
gem 'pg'
gem 'stripe'
gem 'jsonapi-resources', '0.7.0'
gem 'rails_api_auth'
gem 'rack-cors', require: 'rack/cors'
gem 'activerecord-postgis-adapter'
gem 'rgeo-geojson'
gem 'geocoder'
gem 'activerecord-import'
gem 'sidekiq'
gem 'unicorn'
group :development, :test do
gem 'rspec-rails'
gem 'forgery'
gem 'foreman'
end
group :development do
gem 'pry-rails'
end
【问题讨论】:
-
我认为错误来自 Heroku,而不是您的本地计算机。尝试将系统命令替换为
heroku run "ruby -v"进行验证。有关更多故障排除,请参见此处:devcenter.heroku.com/articles/ruby-versions#troubleshooting。除此之外,我会尝试下面@nick-aschenbach 的建议。 -
我认为这不是 Heroku 的问题。如果是这样,那么从命令行单独运行命令(不使用
system)将产生相同的结果。但是从命令行运行它可以正常工作。heroku run ruby -v -a <app name>正确返回ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]。
标签: ruby shell unix heroku rake