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