![](/img/trans.png)
[英]Solr Initialization failure in production environment with ruby on 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.