【问题标题】:Engineyard Gem Failing to Run; find_active_stub_by_path Reports Undefined Method 'this'Engineyard Gem 无法运行; find_active_stub_by_path 报告未定义的方法“this”
【发布时间】:2016-02-10 23:19:45
【问题描述】:

我无法让 Engine Yard gem 在我的 Rails 应用程序上运行。我在 Michael Hartl 的 Ruby on Rails 教程(第三版)前十章的基础上构建了它。虽然它可以很好地部署到 Heroku,但我想切换到 Engine Yard。

这是我每次打电话给 ey 时遇到的错误:

~/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 gem,但我还没明白为什么。

当我在本地启动新项目、在 Cloud 9 上启动新项目或将新项目推送到存储库然后将其克隆到单独的 Cloud 9 帐户时,Engine Yard gem 可以正常工作。但是,我在按照 Hartl 的教程构建的其他三个应用程序中遇到了相同的错误,包括第 1 章中的 hello world 应用程序。

我试图通过重新阅读第 1 章的新项目来确定造成此问题的原因。不幸的是,我对 Hartl 的 hello world 应用程序的重新创建运行 engineyard gem 非常好。 (该游戏的演练如下。)

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

我已经与 Engine Yard 支持团队联系了一个星期,问题似乎不属于 gem。因为我可以在其他 Cloud 9 工作空间上毫无问题地运行 Engine Yard gem,所以 Cloud 9 没有问题。

是什么导致了这个错误,我该如何解决?


我的错误复制工作

注意:如the engineyard gem documentation 中所述,gem 不包含在 Gemfile 中。

在 C9 上,在 Ruby 框架上创建一个公共工作区(简称 A),然后设置 git 并从 A 推送到 BitBucket 而不运行“$ bundle install”

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

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 应用程序正在使用它,但该应用程序当前失败了。将工作空间 A 中 Gemfile 的内容替换为代码清单 1.5 中的内容:

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]

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

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

在 A 上,将 Gemfile 更新为:

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$ 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]

现在在工作区 A 上,按照清单 1.7 运行 rails 服务器,按照清单 1.8 编辑 application_controller,按照清单 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]

【问题讨论】:

    标签: ruby-on-rails ruby rubygems cloud9-ide engineyard


    【解决方案1】:

    这里列出了 ruby​​-gems 问题的修复程序。 https://github.com/rubygems/rubygems/issues/1420#issuecomment-169178431

    它还没有被合并到 master 中。您可以降级 ruby​​-gems 或应用补丁。

    【讨论】:

    • 将 ruby​​gems 降级到 2.5.0 可以让 engineyard 正常工作,谢谢!
    • As pointed out in rubygems/issues/#1420 现在只需运行 gem update --system 即可自动修复此问题。
    【解决方案2】:

    我对另一个 Gem 也有同样的问题,问题来自 ruby​​ 2.3.0。 您必须降级到 2.2.3 或报告错误。

    好像来自rubygemshttps://github.com/rubygems/rubygems/issues/1420

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 2016-07-05
      • 2013-12-20
      • 2014-06-14
      相关资源
      最近更新 更多