1

私はこれを機能させることができません:

apaw:x apaw$ heroku db:pull

dyld: lazy symbol binding failed: Symbol not found: _rb_intern2
  Referenced from: /Users/apaw/.rvm/gems/ruby-1.9.3-p385/gems/sqlite3-ruby-1.3.2/lib/sqlite3/sqlite3_native.bundle
  Expected in: flat namespace

dyld: Symbol not found: _rb_intern2
  Referenced from: /Users/apaw/.rvm/gems/ruby-1.9.3-p385/gems/sqlite3-ruby-1.3.2/lib/sqlite3/sqlite3_native.bundle
  Expected in: flat namespace

別の sqlite3 gem バージョンを試しましたが、すべて同じように失敗します。

rvm 経由で ruby​​-1.9.3-p385 をインストールする前は、完全に機能していました。

4

3 に答える 3

4

これはあなたが望む答えではないかもしれませんが、私はそれがあなたが必要としている答えだと信じています.

まず、Heroku Postgres を使用していると仮定すると、Postgres をローカルで使用して、dev/production の同等性を実現する必要があります。開発環境と展開環境の間の同等性により、環境間の違いによる微妙なバグの導入を防ぐことができます。RVM、バンドラーなど アル。他の分野でこの目標を達成するために取り組みます。データベースでそうするようにお願いします。理論的には、アダプターはバッキング サービス (データベース、キャッシュ システム) の違いを抽象化します。実際には、バッキング サービス間の違いは、小さな非互換性が発生することを意味し、開発またはステージングで機能してテストに合格したコードが本番環境で失敗する原因となります。

第 2 に、これらのdb:pull/push コマンドは推奨されていないため、pgbackups:capture/restore代わりに使用する必要があります。詳細については、PG バックアップを使用した Heroku Postgres データベースのインポートとエクスポートを参照してください。db:pull異なるバックエンド (postgres リモート、sqlite3 ローカル) を扱う場合、悪名高いです。上記のエラーは良い例です。pgbackups を使用すると間違いなくより多くの手順が必要になりますが、はるかに安全で信頼性が高く、スクリプトを作成するのは簡単です。

于 2013-03-05T17:16:11.370 に答える
3

ファイルシステムが一時的なものであるため、 SQLiteはプラットフォームで明示的にサポートされていません。dynoを再起動するとすぐに、sqliteデータベースに書き込んだ内容が消えます。代わりにherokupostgresを使用してください。

それでもこれを実行したい場合は、rubyビルドパックをフォークして変更し、sqlite3ライブラリファイルがアプリケーションにバンドルされるようにすることができます。カスタムビルドパックを作成するためのドキュメントはこちらです。

于 2013-03-06T20:50:29.620 に答える
2

heroku toolbelt をアンインストールし、heroku gem をインストールすることで、なんとかそれを行うことができました。

みなさんヒントありがとうございます

于 2013-03-09T17:37:42.727 に答える