0

Railsコンソールをロードしようとすると、突然次のエラーメッセージが表示されます。最近、データベースをpostgresに切り替えたところ、多くの問題が発生しました(ただし、mysqlよりもはるかに優れていることを認めなければなりません!)ので、これはそれに関連していると思います. 何か案は?

y (Errno::ENOENT)/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require': No such file or directory - /usr/local/lib/?
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `block in require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/sprockets-2.2.2/lib/sprockets/processing.rb:3:in `<top (required)>'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `block in require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/sprockets-2.2.2/lib/sprockets/base.rb:5:in `<top (required)>'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `block in require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.10/lib/active_support/dependencies.rb:251:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/sprockets-2.2.2/lib/sprockets/environment.rb:1:in `<top (required)>'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/actionpack-3.2.10/lib/sprockets/railtie.rb:23:in `block in <class:Railtie>'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/initializable.rb:30:in `instance_exec'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/initializable.rb:30:in `run'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/initializable.rb:54:in `each'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/initializable.rb:54:in `run_initializers'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/application.rb:136:in `initialize!'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/benyorke/rubystore/config/environment.rb:6:in `<top (required)>'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/application.rb:103:in `require'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/application.rb:103:in `require_environment!'
    from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.10/lib/rails/commands.rb:40:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'
4

2 に答える 2

0

これは、Ruby 1.9.3-p385 で修正されたばかりの Ruby 1.9.3-p327 のバグである可能性があります。1.9.3-p385 にアップグレードすると問題は解決しますか?

このエラー メッセージで奇妙に思われるのは、私が抱えていた問題と似ていますが、パスの末尾にある疑問符です: No such file or directory - /usr/local/lib/?. 数週間前に 1.9.3-p194 から 1.9.3-p327 にアップグレードした後、Ruby の require と疑問符、アットマーク、またはパスの末尾にあるその他のランダムな文字を含むパスに関連する同様の奇妙なエラー メッセージが表示されます。ただし、問題は非常に散発的であり、ほぼ同時期にハードウェア障害が発生したため、追跡するのは困難でした.

今日、ある特定のコンテキストで問題が一貫して発生し始めたため、追加のデバッグを行うことができました。1.9.3-p385 への更新で修正されたようですが、私が経験した問題の散発的な性質を考えると、これが実際に修正された 100% ではありません。これがあなたが抱えている問題と同じかどうかも完全にはわかりません. パスにある謎のクエスチョン マークは、関連があるように見せかけているだけです。以下に、取得したエラーの種類の例をいくつか示します。

No such file or directory - /srv/shared/rails/internal/admin/vendor/bun@

No such file or directory - /srv/shared/rails/internal/admin/vendor?

それが私が経験したのと同じ問題に関連しているが、1.9.3-p385 アップグレードで修正されない場合は、いくつかの他の注意事項または調査するものがあります。

  • 今日、1.9.3-p327 と 1.9.3-p374 でこの問題を再現できました。ただし、1.9.3-p194、1.9.3-p286、および 1.9.3-p385 では問題が発生していないようです。
  • gem ロード パスのどこかでシンボリック リンクを使用していますか? たとえば、Bundler を使用して、gem をvendor/bundle各アプリケーション内のローカル パスにインストールします。しかし、これvendor/bundleは実際には別の場所へのシンボリック リンクです (これは Capistrano の展開セットアップに関連しています)。シンボリックリンクがおそらく役割を果たしていると思います。今日のテストでは、シンボリック リンクを使用していなければ、すべてのバージョンの ruby​​ で問題がなくなりました。
  • bundler-execを使用していますか? この問題が散発的に発生していた別の機会では、エイリアス bundler-exec をバイパスすることで魔法のように問題が解決したように見えましたが、今日の問題は bundler-exec にも影響していなかったので、よくわかりません。
  • ほとんどの場合、問題は非常にランダムでした (同じコマンドを数回実行すると、問題は解消されます) が、場合によっては、問題が消えるまで 1 時間以上続くこともありました。
  • 私たちのシステムに関するいくつかの情報:
    • 64 ビット レッドハット エンタープライズ Linux 6
    • バンドラー 1.2.3
    • Rubygems 1.2.5 (1.2.4 でも発生)
    • rbenv

しかし、私が言ったように、この問題は、いくつかのハードウェア ディスクの障害と、私たちの側での一般的なサーバーの不安定さも同時に発生したため、これが Ruby の問題なのか、それとも何が起こっているのか、はっきりとはわかりませんでした。しかし、ここでは 1.9.3-p385 で実際に修正されることを願っています。

于 2013-02-09T04:19:24.600 に答える
0

このスレッドを更新していないことをお詫びします。実際、私は数週間バックグラウンドでこれに取り組んでいます。このオンラインに関する情報を見つけることができなかったので、できる限り詳細な解決策を投稿します。


問題

私が抱えていた問題は、Rails コンソールにアクセスできず、マシンを再起動するたびに postgres サーバーを手動で起動しなければならないことでした。数週間これに取り組んできたので、それに対する私の解決策は

コンソールに関しては、 herokus コンソールを使用しました。アプリをheroku(無料)にプッシュすることで、ウェブ(任意のマシン)で表示できるだけでなく、自分のマシンでも実行できます

$ heroku run console

コンソールにアクセスできます。マシン上のデータを操作できないため、これは完璧なソリューションではありませんが、何度も救われました

私が運営しているサーバーに関して

$ brew info postgres

サーバーを手動で再起動するコマンドが表示されました

You should reload postgresql:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

ソリューション

正直なところ、私は見つけることができるすべてのコマンドを何十回も実行しましたが、今日だけでも機能しました. タイプミスをしていたのか、効果のない順序で行っていたのか、pg/postgres/postgresql を混同していたのか、それとも何をしていたのかはわかりませんが、以下で行ったことはうまくいきました

このソリューションを使用すると、すべてのデータベースが消去されます。移行により構造を再構築できますが、データは失われます

1. Homebrew の更新

$ brew update

home-brew をお持ちでない場合は、このページでインストール手順を確認してください (minimagick、imagemagick、postgres など、多くのことで私の首は救われました!): http://mxcl.github.com/homebrew/

2.postgresqlを削除

$ brew rm postgresql --force

3. postgreql のインストール

$ brew install postgresql

これは、postgres を参照するための最初のステップです。オンラインで調べたところ、postgresql、postgres、および pg を使用するコマンドに出くわしました。Postgresql は、実際の PostgreSQL プログラムを指します。postgres と pg は ruby​​ gem です。これについては後で説明します。

4. 提案されたコマンドを実行

「$ brew install postgres」を実行すると、多くの情報が表示されます。実行するコマンドを提案するので、必ず読んでください。これらの提案を使用して、以下で参照するコマンドを見つけてください。 後でこの情報にアクセスする必要がある場合は、単に実行します

$ brew info postgresql

データベースを初期化するには

$ initdb file/path

オートランチャーをセットアップする

$ cp file/path ~ LaunchAgents/file/path

最初に postgresql を起動します

$ launchctl load file/path
$ pg_ctl-D file/oath

5. Postgres.app をダウンロードします

私の知る限り、これは冗長に思えますが、これが私の Mac で動作するようになった理由です。http://postgresapp.comにアクセスしてダウンロードしてください

6. gem をインストールする

postgres と pg の 2 つの gem があります。gemfile で pg を要求し、bundle install コマンドを実行しましたが、マシンに postgres をインストールするまで問題が発生しました。

gemファイルで

gem 'pg'

ターミナル ウィンドウで bundle install コマンドを実行する

$ bundle install

Sudo は postgres gem をインストールします

$ sudo gem install postgres

この時点で、すべてが機能するはずです。マシンを再起動できるはずで、問題はありません。

于 2013-02-21T01:04:30.357 に答える