2016-02-10 13 views
0

我无法让Engine Yard gem在我的Rails应用程序上工作。在迈克尔哈特尔的Ruby on Rails教程(第三版)的前十章之后,我已经将它建立在基本作品的基础之上。虽然它部署Heroku罚款,我想切换到引擎场。机器宝石未能运行; find_active_stub_by_path报告未定义的方法“this”

这里是我得到任何时候的错误,我打电话安永:

~/workspace (development) $ ey --help 
/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:2158:in `method_missing': undefined method `this' for #<Gem::Specification:0x52e978 engineyard-3.2.1> (NoMethodError) 
     from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1057:in `find_active_stub_by_path' 
     from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:64:in `require' 
     from /usr/local/rvm/gems/ruby-2.3.0/gems/engineyard-3.2.1/bin/ey:3:in `<top (required)>' 
     from /usr/local/rvm/gems/ruby-2.3.0/bin/ey:23:in `load' 
     from /usr/local/rvm/gems/ruby-2.3.0/bin/ey:23:in `<main>' 
     from /usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval' 
     from /usr/local/rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>' 

Ruby documentation似乎表明,EngineYard的宝石不能被发现,但我还没有明白过来为什么。

当我在本地启动一个新项目时,当我在Cloud 9上启动一个新项目时,或者当我将新项目推送到回购站时,将它克隆到单独的Cloud 9帐户,Engine Yard gem正常工作。然而,我在其他三个应用程序中收到了相同的错误,包括第1章中的Hello World应用程序。

我试图通过第1章再次讨论一个新项目来确定是什么造成了这个问题。不幸的是,我对Hartl的hello world应用程序的娱乐非常好地运行了engineyard gem。 (该娱乐的演练如下。)

'gem pristine --all'对此错误没有影响。

我一直与Engine Yard支持团队联系一周,问题似乎不属于宝石。由于我可以在其他Cloud 9工作空间上运行Engine Yard Gem而没有问题,因此它不是Cloud 9的问题。

什么是导致此错误的原因,我该如何解决?


我的错误复制努力

注:如the engineyard gem documentation指出,创业板是不包含在Gemfile中。

在C9,创建Ruby框架(简称为A)一个公共工作区,然后设置Git和推到位桶从A不运行“$包安装”

现在在一个单独的创建第二工作区在Ruby框架上的C9(称为B)帐户上,并从回购中克隆它。

B$ gem install engineyard 
B$ ey --help [this was SUCCESSFUL] 
B$ bundle install 
B$ ey --help [this was SUCCESSFUL] 

现在在A上安装engineyard gem并测试它。

A$ bundle install 
A$ gem install engineyard 
A$ ey --help [this was SUCCESSFUL] 

现在测试列表1.5中的Gemfile,该列表由我当前正在失败的hello world应用程序使用。清单1.5替换的Gemfile的工作空间中的与内容:

gem 'rails', '4.2.0' 
gem 'sass-rails', '5.0.1' 
gem 'uglifier', '2.5.3' 
gem 'coffee-rails', '4.1.0' 
gem 'jquery-rails', '4.0.3' 
gem 'turbolinks', '2.3.0' 
gem 'jbuilder', '2.2.3' 
gem 'sdoc', '0.4.0', group: :doc 

group :development, :test do 
    gem 'sqlite3', '1.3.9' 
    gem 'byebug', '3.4.0' 
    gem 'web-console', '2.0.0.beta3' 
    gem 'spring', '1.1.3' 
end 

现在运行此:

A$ bundle install 
A$ ey --help [this was SUCCESSFUL] 
A$ git add -A 
A$ git commit -m "Make Gemfile equal to Hartl's Listing 1.5" 
A$ git push 
B$ git pull 
B$ bundle install 
B$ ey --help [this was SUCCESSFUL] 

所以这个版本的Gemfile的清单1.5是没有问题的。

步骤1.3.2告诉我们运行一个rails服务器,该服务器在sass-rails 5.0.1失败。我在现有的/已完成的hello world应用程序中将5.0.1替换为5.0.2(正如我在真实项目中所做的那样)。现在执行的A和B(通过库)相同的更新...

上,更新的Gemfile这样:在工作区

A$ bundle install 
A$ ey --help [this was SUCCESSFUL] 
A$ git add -A 
A$ git commit -m "Upgrade sass-rails to 5.0.2" 
A$ git push 
B$ git pull 
B$ ey --help [this was SUCCESSFUL] 

现在:

gem 'rails', '4.2.0' 
gem 'sass-rails', '5.0.2' 
gem 'uglifier', '2.5.3' 
gem 'coffee-rails', '4.1.0' 
gem 'jquery-rails', '4.0.3' 
gem 'turbolinks', '2.3.0' 
gem 'jbuilder', '2.2.3' 
gem 'sdoc', '0.4.0', group: :doc 

group :development, :test do 
    gem 'sqlite3', '1.3.9' 
    gem 'byebug', '3.4.0' 
    gem 'web-console', '2.0.0.beta3' 
    gem 'spring', '1.1.3' 
end 

现在运行这个A,像清单1.7那样运行rails服务器,编辑application_controller(如代码清单1.8所示),像清单1.10那样更改路由并测试它。按预期工作。现在推送并测试B ...

A$ ey --help [this was SUCCESSFUL] 
A$ git add -A 
A$ git commit -m "Listings 1.7, 1.8, and 1.10" 
A$ git push 
B$ git pull 
B$ ey --help [this was SUCCESSFUL] 

回答

2

未来有一个修复这里列出的红宝石宝石的问题。 https://github.com/rubygems/rubygems/issues/1420#issuecomment-169178431

它还没有被合并到主。您可以降级宝石或应用该补丁。

+0

将rubygems降级到2.5.0可以让engineyard正常工作,谢谢! – Ryan

+0

由于[指出](https://github.com/rubygems/rubygems/issues/1420#issuecomment-256350006)在__rubygems/issues /#1420__中,现在只需运行'gem update --system '。 –

相关问题