【问题标题】:Two almost identical Rails projects, missing gem helper file in one but not the other两个几乎相同的 Rails 项目,一个缺少 gem 帮助文件,另一个没有
【发布时间】:2012-09-02 03:50:22
【问题描述】:

我的主目录中的同一个父级下有两个具有相同环境的 rails 项目。两者都使用 authorize-net (1.5.2) gem。我在 Mac OS X 10.8.1 上使用 ruby​​ 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11.4.0]、Rails 2.3.14 和 rvm 1.14.3。两者的 config/environment.rb 中都有 config.gem 'authorize-net', :lib => 'authorize_net,它们的相关控制器顶部都有 helper :authorize_net,它们的 application_controller.rb 顶部都有 helper :all。然而一个工作正常,另一个得到MissingSourceFile (Missing helper file helpers/authorize_net_helper.rb) 错误。帮助文件实际上位于~/.rvm/gems/ruby-1.8.7-p358@global/gems/authorize-net-1.5.2/lib/app/helpers/authorize_net_helper.rb

我终其一生都无法弄清楚为什么一个有效而另一个无效。谁能指出我正确的方向?在每种情况下,我如何才能确定 Rails 使用什么路径来查找此帮助程序?

【问题讨论】:

  • 您使用的是 rvm gemsets 吗?如果每个应用程序都有自己的 gemset,则需要在每个应用程序中安装 gems
  • 我不相信我以任何方式使用 gemsets。两个项目的基本目录中都没有 .rvmrc。 gem 在@global 中,我的 GEM_PATH 是/Users/russ/.rvm/gems/ruby-1.8.7-p358:/Users/russ/.rvm/gems/ruby-1.8.7-p358@global。 gem 只出现在@global 目录中。

标签: ruby-on-rails helpers authorize.net


【解决方案1】:

多年来我在使用 StackExchange 领域学到的一件事是,当我遇到一个奇怪的问题并且在几天内没有得到答案时,我做了一件其他人没有做过或可能没有做过的愚蠢的事情永远都会做。我想这是其中之一,但我永远不会知道,因为问题已经消失了,我不知道为什么。

意识到工作项目来自 authorize.net 的示例而非工作项目没有,我发现 authorize-net gem 有一个我没有使用过的生成器。所以我通过生成器代码并意识到我缺少一个我确定我已经创建的初始化程序。这个初始化程序只是从 YML 文件中加载一些常量(api_login_id 和 api_transaction_key),与路径无关,但我还是创建了它,然后才意识到实际上我之前已经创建了它,但把它放在控制器而不是配置/初始化程序中。无论如何,当我重新启动 WEBrick 时,一切正常,没有路径问题。现在我之前已经多次重启了 WEBrick,包括在发布这个问题之前。但这次问题消失了。

我讨厌这种情况发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多