【问题标题】:Rails vendor plugin failure in production environmentRails 供应商插件在生产环境中失败
【发布时间】:2010-11-10 03:25:26
【问题描述】:

我预计这是一个 n00b 问题。

我正在尝试将 heroku 与我的 rails 应用程序一起使用。在开发(本地机器)中一切正常,但是当我推送到 heroku 时,我得到以下信息:

==> dyno-1931938.log (crash) <==
/home/slugs/258915_4fd8878_0dbe-1413ed77-735c-469d-924e-619b28cdcbac/mnt/.bundle/gems/ruby/1.8/gems/activerecord-3.0.0/lib/active_record/base.rb:1016:in `method_missing': undefined local variable or method `acts_as_paranoid' for #<Class:0x2b469869b658> (NameError)
    from /disk1/home/slugs/258915_4fd8878_0dbe-1413ed77-735c-469d-924e-619b28cdcbac/mnt/app/models/my_model.rb:17

my_model.rb 的第 16 和 17 行是:

class Contact < ActiveRecord::Base
  acts_as_paranoid

'acts_as_paranoid' 是一个供应商插件,通过以下方式在本地安装:

$git clone https://github.com/goncalossilva/rails3_acts_as_paranoid.git

heroku 忽略插件我做错了什么?


更新: 我从heroku克隆了repo,插件的目录存在,但是是空的。我的其他插件(即 ssl_requirement)具有期望的 lib/ 和 init.rb。显然,代码需要在那里才能工作。现在呢?

【问题讨论】:

    标签: ruby-on-rails heroku ruby-on-rails-plugins


    【解决方案1】:

    克隆源代码会从 github 检索代码,但不会将 gem 安装到您的应用程序中。通常你会像这样在本地机器上安装 gem:

    gem install acts_as_paranoid
    

    sudo gem install acts_as_paranoid
    

    然后通过将其添加到您的 .gems 文件中来告诉 Heroku 宝石:

    acts_as_paranoid
    

    或者更好的是,也指定您期望的版本(否则 Heroku 会在您每次将新代码推送到应用程序时获取最新版本,这可能会导致意外损坏):

    acts_as_paranoid --version x.y.z
    

    并确保您的 config/environment.rb 有一个 gem 条目,以便在启动时而不是稍后检测到它的缺失:

    config.gem 'acts_as_paranoid', :version => 'x.y.z'
    

    PS:如果您使用 Rails 3 和/或 Bundler 来管理您的 gem,上述所有内容都会有所不同。

    【讨论】:

    • 这是一个插件而不是一个 gem 是不是有不同的程序?另外,我已经修改了插件,所以我想使用我的本地副本而不是来自存储库的副本。是的,我正在使用 rails 3/bundle。
    • 是的,如果它是一个真正的插件,它应该可以从您的供应商/插件目录中找到。在这种情况下,它既是 gem 又是插件,因此您可以使用任何一种方法。
    • 对,在您的情况下(修改代码),插件更有意义。很高兴您找到了解决方案。我会在这里留下我的答案,以防它对拥有 gem 选项的人有所帮助。
    【解决方案2】:

    原来vendor/plugins/my_plugin_directory 已经从 git 树上掉下来了。我通过以下方式解决了问题:

    $cd rails_root_directory
    $git fsck
    $git rm --cached vendor/plugins/my_plugin_directory
    $git add vendor/plugins/my_plugin_directory/*
    $git commit -am "my_plugin added to repository"
    $git push heroku master
    

    现在一切正常。

    【讨论】:

    • 嗯——你有没有设法让acts_as_paranoid 与Rails 3 项目一起工作?在我的身上,它不再能找到很多它所依赖的活动记录方法......
    • 我正在使用 rails3-acts-as-paranoid:github.com/goncalossilva/rails3_acts_as_paranoid
    猜你喜欢
    • 2014-06-03
    • 2013-07-28
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多