簡體   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