Rails供应商插件在生产环境中失败

时间:2010-11-10 03:25:27

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

我希望这是一个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.显然代码需要在那里工作。现在怎么办?

2 个答案:

答案 0 :(得分:2)

克隆源代码从github中检索代码,但它不会将gem安装到您的应用程序中。通常,您可以在本地计算机上安装gem,如下所示:

gem install acts_as_paranoid

sudo gem install acts_as_paranoid

然后通过将其添加到.gems文件中告诉Heroku关于gem:

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来管理您的宝石,以上所有内容都会有所不同。

答案 1 :(得分:0)

事实证明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

现在一切都好了。