問題タブ [capistrano3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Capistrano3 デプロイメント エラー (エラー: gem ネイティブ拡張のビルドに失敗しました。)
capistrano3 での展開中にバンドル インストールで次のエラーが発生する
Gemfile.lock に、インストールを要求する特定のバージョンのアトミック gem があります。
アトミック(1.1.16)で、ec2マシンにも手動でインストールしました。しかし、展開中に繰り返し次のように言います。
capistrano - Capistrano 3 での「タスクのビルド方法がわからない」エラー
DOCS に従って Capistrano 3 の使用方法を学ぼうとしています。理解度をテストするための簡単なタスクを作成しました。
タスクは、次のデフォルトtask
ディレクトリに作成されlib/capistrano/tasks
ます。
私のconfig/deploy/staging.rb
ファイルには以下が含まれています:
キャップファイル
Mydeploy.rb
には、アプリ名と github へのリポジトリ URL が含まれています。
実行するcap staging nginx_status
と、次のエラーが表示されます。
cap -vT
また、タスクを実行nginx_status
してもリストにないことに気付きました(?)
余談ですが、リモートサーバーに接続するにはSSHキーが必要ですか?
更新 1
タスクを配置すると機能することがわかりましたconfig/deploy.rb
。だから私が今持っている質問は、タスクディレクトリからどのようにタスクを実行するのですか?
更新 2
したがって、Capfile に従って、tasks
ディレクトリは次のように調べられます。
そのため、タスク拡張機能をに変更したところ、機能し.rake
ました。ただし、ドキュメントにはそうあるべきだと書かれています.cap
「後で詳しく説明しますが、これらの行を ./lib/capistrano/tasks のファイルに追加し、access_check.cap のように呼び出します」
git - capistrano3 を使用したデプロイ時の認証ソケットへの書き込みエラー
capistrano 3 でデプロイを行うと、エラーが発生しますが、致命的ではなく、最終的にデプロイは成功します。
私のエラーメッセージは次のとおりです: 認証ソケットへの書き込みエラー
このエラー メッセージは 3 回表示されました。
このような:
この:
私はこのエラーで作業できますが、解決できればより良いでしょう:)
ruby-on-rails - Capistrano 3 はログイン シェルを使用します
ログイン/非ログイン、インタラクティブ/非インタラクティブシェルのこの素晴らしい説明を読みましたhttp://capistranorb.com/documentation/faq/why-does-something-work-in-my-ssh-session-but-not-in-capistrano / . しかし、特定のシェルで capistrano 3 を実行する方法がどこにも見つかりませんでした。次のようなオプションを試しました:
しかし、何も役に立ちませんでした。ありがとう。
ruby-on-rails - Capistrano はバンドラーに RAILS_ENV を設定しません
私の Gemfile では、RAILS_ENV に基づいて、git リポジトリで使用するブランチを指定します。ただし、Capistrano がデプロイされると、bundle install
コマンドが実行されます。コマンドはシェルを介して実行されるため、適切な環境 (ステージング) が設定されていません。デフォルトは開発であり、Gemfile.lock とインストールされているものとの間に不一致があるというエラーが表示されます。
Gemfile を変更した後、展開モードでインストールしようとしています。他の場所で実行
bundle install
し、更新された Gemfile.lock をバージョン管理に追加します。Gemfile に追加しました: * ソース: git@bitbucket.org:MyRepository/manager-engine.git (開発時)
Gemfile から削除しました: * ソース: git@bitbucket.org:MyRepository/manager-engine.git (マスターで)
Gemfile を変更しました: * manager から
git@bitbucket.org:MyRepository/manager-engine.git (at develop)
へno specified source
Gemfile:
つまり、レール環境が「運用」または「ステージング」以外の場合は、「開発」ブランチを使用してください。
デプロイ/staging.rb:
したがって、最も簡潔にするために:
通常の SSH ターミナルでは、リポジトリ gem を適切な環境にインストールするには、RAILS_ENV=staging bundle install
. それ以外の場合は、実行するだけbundle install
で、develop ブランチからリポジトリがインストールされます。Capistrano は実行されるだけで .xml がbundle install
含まれていないためRAILS_ENV
、この問題が発生しています。しかし、Capistrano は :rails_env を設定していませんか、それとも実際のシステム環境変数ではありませんか?
capistrano - Capistranoで別のユーザーとしてbashコマンドを実行するには?
カピストラーノで次のことを達成するにはどうすればよいですか?
次のタスクは機能しません。
execute ステートメントのコマンドは、bash スクリプトで機能します。
編集1:
私も次のことを試しました:
エラーの内容:
まだユーザーとしてコマンドを実行しているようssh
です。
ruby-on-rails - Capistrano 3 を使用して rvmrc trust コマンドを実行する方法
私は Capistrano 3 を使用しており、rvmrc trust
コマンドを実行してデプロイする必要があります。
このコードを deploy.rb に追加しました
しかし、タスクは実行されません。
Capistrano 3rvmrc trust
を使用して実行するには?
タスクを実行する前にデプロイ タスク フローを確認する方法はありcap deploy
ますか?
ありがとうございました!
ruby-on-rails - Ruby On Rails:Capistrano 3でデプロイするときにyml構成をファイルに書き込む方法は?
私の問題は本当に単純ですが、Googleで答えが見つかりません。
Capistrano タスクを使用して、サーバー上のリモート ファイルに yml 構成を挿入したいと考えています。
Capistrano 2 と「put」コマンドでは非常に簡単でしたが、Capistrano 3 では正しい方法が見つかりません。
たとえば、これが私の yml 構成です。
"db_config" 変数を database.yml ファイルに挿入したいと思います。Capistrano 2 を使用すると、次のようになります。
しかし、Capistrano 3 では機能しなくなりました。私はこのようなことを試しました:
ただし、行末は保持されず、「;」に置き換えられます。「echo」コマンドのためです。
Capistrano 3 でこのようなことをしたことがある人はいますか?
それ以外の場合は、「database.yml.example」を使用して、展開後に直接変更します。
ありがとう!
[更新] これが私の全体の Capistrano 3 タスク コードです。
mysql - 新しいマイグレーションが追加された capistrano 3.1 デプロイ
Ubuntu、レール 4.1、カピストラーノ 3.1
カピストラーノでRailsアプリをサーバーにデプロイしたところ、db:migrationが実行されてデータベースが構築されました。
ただし、後で新しい移行を作成し、「cap production deploy」を使用すると、元のデータベースにいくつかのテーブルがないことが示されます(新しい移行ではdb:migrationが実行されません)。そして、「cap production deploy:migrate」を使用すると、capistrano はすべての移行 (以前に実行されたものを含む) を実行するため、いくつかのテーブルが既に存在していると報告されます (もちろん、それらは以前に存在します)。
私の質問は、新しく作成された移行で db:migrate を実行するにはどうすればよいですか?
ありがとう
capistrano - root として capistrano 3 カスタム セットアップ スクリプトを 1 回実行します。
私は capistrano 3 を完全に実行しており、非 root ユーザーとしてパスワードなしで展開しています。
私が今やろうとしているのは、upstart サービスである sudoers.d ファイルをインストールし、サーバーにいくつかの依存関係をインストールするインストール スクリプトをセットアップすることです。
production.rb ファイルにユーザーとホストを入力して実行するだけで、新しいサーバーをインストールできます。cap production setupserver
問題は、作成したセットアップ スクリプトを root として実行する必要があることです。
しかし、これは 1 回限りのことなので、単純にユーザーに root パスワードを尋ねて、サーバー上でいくつかのタスクを実行したいと思います。
を使用しているため、as :root
コマンドは機能しませんsu -c
ここに示されているように、パスワードを要求できます http://capistranorb.com/documentation/faq/how-can-i-get-capistrano-to-prompt-for-a-password/
production.rb ファイルで指定されたユーザーをオーバーライドする方法について何か提案はありますか?
求められたパスワードを渡す方法は?