CapistranoデプロイのCurrent
フォルダー内のサーバーでSSH経由でbundle exec Rails console production
またはRails console production
を実行すると、次のようになります。
Usage:
Rails new APP_PATH [options]
Options:
(...)
新しいアプリを起動するための説明付き。ローカルで動作します。コンソールをリモートで起動できないのはなぜですか?
バージョン3からRails 4
にアップデートし、アプリがbin
ディレクトリで実行可能ファイルを見つけられないと想定しています。これを実行して、Railsバージョンを確認します。
$ Rails -v
Rails
バージョンが4以上の場合は、次のコマンドを実行してみてください。
$ rake Rails:update:bin
出典: Rails 4リリースノート
6.1注目すべき変更
- これで、アプリの実行可能ファイルが
bin/
ディレクトリに配置されました。rake Rails:update:bin
を実行して、bin/bundle
、bin/Rails
、およびbin/rake
を取得します。
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
ディレクトリがないことに注意してください。
私も同じ問題を抱えており、キャップshared/bin
がcurrent/bin
へのシンボリックリンクを介してデプロイすると判明します。
これは私のために働くものです:
rm current/bin
mkdir current/bin
rake Rails:update:bin
これは役立つはずですが、それは一時的な解決策ですが、現在の/ binで自動シンボリックリンクしないようにキャップを作成する方法を見つけようとしています。
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
それでおしまい。
これが答えられてからしばらく経ちました。
私の場合、実行する必要がありました:
rake app:update:bin
RailsではなくNote-app。
Rails 5.1 Appにbinディレクトリがすべて揃っていませんでした