web-dev-qa-db-ja.com

Railsコンソールがサーバーで動作していません

CapistranoデプロイのCurrentフォルダー内のサーバーでSSH経由でbundle exec Rails console productionまたはRails console productionを実行すると、次のようになります。

Usage:
     Rails new APP_PATH [options]

Options:
    (...)

新しいアプリを起動するための説明付き。ローカルで動作します。コンソールをリモートで起動できないのはなぜですか?

25

バージョン3からRails 4にアップデートし、アプリがbinディレクトリで実行可能ファイルを見つけられないと想定しています。これを実行して、Railsバージョンを確認します。

$ Rails -v

Railsバージョンが4以上の場合は、次のコマンドを実行してみてください。

$ rake Rails:update:bin

出典: Rails 4リリースノート

6.1注目すべき変更

  • これで、アプリの実行可能ファイルがbin/ディレクトリに配置されました。 rake Rails:update:binを実行して、bin/bundlebin/Rails、およびbin/rakeを取得します。
62
user3453503

Capistrano/bundler gemを含め、capistranoを使用して展開しています。 ./binディレクトリはRails 4でバージョン管理されているため、set :linked_dirsからbinを削除することにより、Capistranoがデプロイメントでリンクしないようにする必要があります。

次に、バンドラーがバージョン管理されたビンスタブを上書きしないようにするために、set :bundle_binstubs, nilという行を追加して、バンドルインストールの実行時にcapistrano-bundlerが--binstubsオプションを設定できないようにします。

私のconfig/deploy.rbファイルには次の行があります。

# Default value for linked_dirs is []
set :linked_dirs, fetch(:linked_dirs, []).Push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :bundle_binstubs, nil

:linked_dirs行にbinディレクトリがないことに注意してください。

21
Troy

私も同じ問題を抱えており、キャップshared/bincurrent/binへのシンボリックリンクを介してデプロイすると判明します。

これは私のために働くものです:

  • rm current/bin
  • mkdir current/bin
  • rake Rails:update:bin

これは役立つはずですが、それは一時的な解決策ですが、現在の/ binで自動シンボリックリンクしないようにキャップを作成する方法を見つけようとしています。

15
maxhungry

Rails 5.2の場合

プロジェクトのルートディレクトリで以下のコマンドを実行して、binディレクトリを削除する必要がありました。

 rm -rf bin

次に、プロジェクトのルートディレクトリで別のコマンドを実行しました。

 rake app:update:bin

以下のような出力が表示されます:

  create  bin
  create  bin/bundle
  create  bin/Rails
  create  bin/rake
  create  bin/setup
  create  bin/update
  create  bin/yarn

それでおしまい。

7

これが答えられてからしばらく経ちました。

私の場合、実行する必要がありました:

rake app:update:bin

RailsではなくNote-app。

Rails 5.1 Appにbinディレクトリがすべて揃っていませんでした

0
Smithy