ホスティング ヘルプ - DreamHost のカスタム Gem
-
05-07-2019 - |
質問
パッセンジャーを使用して RoR アプリを DreamHost ホスティング アカウントにデプロイしようとしていますが、起動して実行するのに問題があります。
私のアプリケーションには、2つのカスタムジェム「Amazon-ECS」と「Nokogiri」が必要です。 Dreamhost Wikiの指示に従って(http://wiki.dreamhost.com/Freezing_Gems) gem を構成ファイル (config.gem "nokogiri") にコーディングすることでベンダーに提供し、rake gems:unpack コマンドを使用してベンダーにビルドしました。
次に、rake Rails:freeze:gems を使用して Rails gem を凍結し、サブドメインにアップロードしました。
バックトレースの最後の 7 行は次のようになります。
0 /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb 336 in `abort'
1 /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb 336 in `check_gem_dependencies'
2 /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb 170 in `process'
3 /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb 113 in `send'
4 /home/rclosner/demo.spubooks.com/vendor/rails/railties/lib/initializer.rb 113 in `run'
5 ./config/environment.rb 9
6 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb 31 in `gem_original_require'
7 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb 31 in `require'
私の構成ファイルは次のようになります。
RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
require File.join(File.dirname(__FILE__), 'boot')
Rails::Initializer.run do |config|
config.gem "nokogiri"
config.gem "amazon-ecs"
config.time_zone = 'UTC'
end
宝石の手順を踏み外してしまったのでしょうか?私は正しい道を進んでいますか?
解決
ネイティブ拡張機能を持つ gem はアプリと一緒にベンダー化できません。また、DH では config.gem も正しく動作しない可能性が高くなります。独自の Rubygem をインストールし、アプリでそれを使用できるようにする必要があります。これをご覧になることをお勧めします。
http://railstips.org/2008/11/24/rubygems-yours-mine-and-ours
DH で環境をセットアップするための優れた手順が記載されています。先週、サーバーのアップグレード後にこれを行う必要がありましたが、それは今でも適用されます。
他のヒント
so / vendor / railsと/ vendor / plugins / nokogiriとamazon-ecsが存在し、あなたには問題ありませんか?もう一度試してみてください。今回は、このように設定でgemの正確なバージョンを指定します
config.gem "nokogiri", :version => "1.0"
またはgemがGithubにある場合
config.gem "tenderlove-nokogiri", :version => "1.0", :lib => "nokogiri", :source => "http://gems.github.com"
バックトレースはあまり役に立たないようですが、正確に何が起こっているのでしょうか? :-)
最近展開したアプリで、同じバックトレースを取得しました(旅客エラーページで)。私が依存していた宝石(config.gem)の1つを見つけることができなかったことが判明しました... rake gemが存在すると言っていたにもかかわらず([I] test-unit = 1.2.3)。
Dreamhostのサポートにより、gemをフリーズ/アンパックしてみることをお勧めします。それはおそらく機能していました(凍結された他のgemを見つけるのに問題はありませんでした)が、何らかの理由でrake gems:unpackは私のために何もしなかったので、その設定をコメントアウトしましたとにかく本番環境では必要なかったので、.gem行は機能しました!
したがって、他の誰かがこのエラーを受け取っている場合、gemの1つが見つからないことを強く示しています。 config.gemの行を1行ずつコメントアウトしてみてください。動作するまで、または別のエラーが発生するまで
先週、DreamHostで問題が発生しました。gemが見つからないため、Railsアプリの動作が突然停止しました。私はサポートに連絡しましたが、ここに彼らの応答がありました:
いくつかの変更が行われたようです サーバーとほとんどの システムにインストールされたrubygemsは 彼らが持っているはずのように再インストール されました。 sqlite3を手動でインストールしました あなたのための宝石、しかし処理する私達の管理者 これはこれを見てみる必要があります なぜそうではなかったのかを理解するために インストール済み。さらにいくつかある場合 あなたが働いていないことがわかります 潜在的にそれらをストップとしてインストールする 平均時間のギャップ。
同じことの影響を受けている可能性があります。サポートに連絡して確認してください。