繁体   English   中英

生产环境中的Rails供应商插件故障

[英]Rails vendor plugin failure in production environment

我希望这是一个n00b问题。

我正在尝试在我的Rails应用程序中使用heroku。 在开发(本地计算机)中一切正常,但是当我推送到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 my_model.rb是:

class Contact < ActiveRecord::Base
  acts_as_paranoid

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

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

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


更新:我从heroku克隆了仓库,并且该插件的目录存在,但为空。 我的其他插件(即ssl_requirement)具有期望的lib /和init.rb。 显然,代码需要在那里工作。 现在怎么办?

克隆源可从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管理您的宝石,上述所有内容都会有所不同。

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

现在一切都正常了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM