チュートリアル: Capistrano を使用して Rails アプリをデプロイする
Capistrano(英語) は、デプロイスクリプトを使用してアプリケーションをデプロイするためのツールです。 デプロイを実行するには、事前定義されたタスクを使用するか、カスタム Rake タスクを作成します。 RubyMine を使うと、double Ctrl で Capistrano タスクを素早く実行し、 実行構成を使って Capistrano の実行オプションを設定できます。 実行構成をカスタマイズして 、特定のタスク引数を渡したり、目的のステージを選択したりすることができます。
このチュートリアルでは、Capistrano を使って サンプル Rails アプリケーション をリモートサーバーへデプロイする方法を説明します。 アプリケーションサーバーとして、Passenger と Nginx を組み合わせて使用します。
前提条件
このチュートリアルでは、2 つのマシンを使用して、アプリケーションのデプロイをデモします。
ローカルマシン: macOS の Mac、RubyMine インストール済み、 作成したコマンドラインランチャー。 コマンドラインランチャーは、 資格情報を生成するときにエディターを指定する必要があります。
Web サーバー: SSH アクセス(英語)および Git(英語) がインストールされた Ubuntu マシン。 このチュートリアルでは、Web サーバーの名前は sample-web-server であり、 deploy 権限を持つ sudo(スードゥー)または sudo(管理者権限実行) ユーザーがいます。
Web サーバーに rbenv と Ruby をインストールする
まず、Ruby インタープリターを Web サーバーにインストールする必要があります。 これを行うには、 ruby-build(英語) プラグインとともに rbenv(英語) を使用します。 サーバーで必要なアクションを実行するには、RubyMine に組み込まれているターミナルエミュレーターを使います。
RubyMine で サンプル Rails アプリケーションを開き、以下の手順に従ってください。
に進みます。 呼び出されたダイアログで、Web サーバーのアドレスとデプロイユーザーの資格情報を指定します。 OKです。 をクリックしてください。

ソースから (英語)Ruby をビルドする、Passenger をインストールする、SQLite を操作するなどに必要なパッケージをインストールします。 また、JavaScript の依存関係を管理するために Node.js と Yarn をインストールします。
sudo apt-get update sudo apt-get install curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev dirmngr gnupg apt-transport-https ca-certificates nodejs yarnrbenv を Basic GitHub Checkout の章の説明に従ってインストールします。 次に、 インストール(英語)の指示に従って、Ruby のコンパイルとインストールに必要な ruby-buildビルド用ツールです。 プラグインをインストールします。
以下のコマンドを実行して、アプリケーションが使用する Ruby ディストリビューションをインストールします(英語)。
rbenv install 2.6.3 rbenv global 2.6.3最後に、 Bundler(英語) をインストールして、プロジェクト gems を管理します。
gem install bundler
Passenger と Nginx のインストールと構成
アプリケーションサーバーとして、 Nginx と組み合わせた Passenger(英語) を使用します。 Web サーバーにインストールし、構成を調整しましょう。
Passenger パッケージをインストールするには、以下のコマンドを実行します。
#(a) Install the PGP key sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7 #(b) App the APT repository sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main > /etc/apt/sources.list.d/passenger.list' sudo apt-get update #(c) Install Passenger and Nginx module sudo apt-get install -y libnginx-mod-http-passenger #(d) Make sure the configuration files exist if [ ! -f /etc/nginx/modules-enabled/50-mod-http-passenger.conf ]; then sudo ln -s /usr/share/nginx/modules-available/mod-http-passenger.load /etc/nginx/modules-enabled/50-mod-http-passenger.conf ; fi sudo ls /etc/nginx/conf.d/mod-http-passenger.conf次に、Passenger を正しいバージョンの Ruby にポイントする必要があります。 Nano で mod-http-passenger.conf 構成ファイルを開きます。
sudo nano /etc/nginx/conf.d/mod-http-passenger.conf次に、 passenger_ruby(英語) オプションを次のように変更します。
passenger_ruby /home/deploy/.rbenv/shims/ruby;mod-http-passenger.conf ファイルを保存して閉じます。
デフォルトの Nginx サーバーを削除しましょう ...
sudo rm /etc/nginx/sites-enabled/default... サンプルアプリケーション用に 1 つ追加します。
sudo nano /etc/nginx/sites-enabled/sample_rails_app開いた sample_rails_app ファイルで、次の構成を指定します。
server { listen 80; listen [::]:80; server_name _; root /home/deploy/sample_rails_app/current/public; passenger_enabled on; passenger_app_env staging; }最後に、Nginx サービスを開始します。
sudo service nginx start
Capistrano をインストール gems
これで、Capistrano をアプリケーションにバンドルする準備ができました。
最初に、アプリケーションのデプロイに使用する別のブランチを作成します。 Alt+` を押し、呼び出されたポップアップで ブランチ を選択してから、 新規ブランチ を選択します。 新規ブランチの作成 ダイアログで、ブランチ名(この場合は capistrano-deploy )を指定し、 作成 をクリックします。

プロジェクト Gemfile を開き、次の Capistrano gems を追加します。
gem 'capistrano', '3.11.2' gem 'capistrano-rails', '1.4.0' gem 'capistrano-rbenv', '2.1.4 ' gem 'capistrano-passenger', '0.2.0'ハイライト表示された gems のいずれかにキャレットを置き、 Alt+Enter を押して Bundler を使用してインストールします。

アプリケーションをキャプションする
このパートでは、Capistrano を初期化し、デプロイスクリプトを構成します。
アプリケーションを修飾するには、メインメニューから を選択します。 次のファイルがプロジェクトに追加されます。
Capfile
config/deploy.rb
config/environments ディレクトリ内の staging.rb および production.rb
は
cap installコマンドを実行することに注意してください。 このコマンドを実行すると、RubyMine はinstallタスクを実行するための実行構成を作成します。 必要に応じて、 この構成をカスタマイズして特定の引数を渡すことができます。Capfile を開き、次の行を追加して必要な依存関係をロードします。
require "capistrano/rails" require "capistrano/rbenv" require "capistrano/passenger"同じファイルで、 rbenv に次の設定を指定します。
set :rbenv_type, :user set :rbenv_ruby, '2.6.3'デプロイ設定を構成する前に、変更をリモートリポジトリに コミットしてプッシュします。 チュートリアルでは、サンプル Rails アプリケーションの capistrano-deploy(英語) ブランチになります。
config/deploy.rb ファイルを開きます。 ここでは、Web サーバー上の Git リポジトリの詳細とデプロイパスを指定する必要があります。
set :application, "sample_rails_app" set :repo_url, "https://github.com/JetBrains/sample_rails_app" set :branch, "capistrano-deploy" set :deploy_to, "/home/deploy/#{fetch :application}" append :linked_files, "config/master.key"最後に、 config/deploy/staging.rb を開き、次の方法で変更して、Web サーバーのアドレスを指すようにします。
server "sample-web-server", user: "deploy", roles: %w{app db web}
カスタム資格情報を提供する
デプロイの staging 構成を使用しているため、Rails アプリケーションにステージング環境を追加する必要があります。 次に、カスタム資格情報を提供する必要があります。
staging 環境を Creating Rails Environmentsの説明に従って作成します。 この例では、作成された構成( config/environments/staging.rb )は、次の行を除き、 開発 構成を複製します。
config.require_master_key = trueこのオプションは、資格情報の復号化に使用されるマスターキーが Web サーバーで使用可能であることを指定します。
ここで、 暗号化 / 復号化(英語)の暗号化された credentials.yml.enc ファイルと master.key を生成する必要があります。 メインメニューから を選択してローカルターミナルを開き、次のコマンドを実行します。
rails secret EDITOR="mine" bin/rails credentials:editconfig/master.key および config/credentials.yml.enc ファイルが生成されます。 Git にファイル追加 の説明通りに config/credentials.yml.enc ファイルを VCS に追加します。
config/master.key ファイルは VCS の外部に配置する必要があるため、このファイルを Web サーバーにアップロードするカスタムタスクを作成する必要があります。 プロジェクトビュー Alt+1 で lib/capistrano/tasks ディレクトリを開き、次の内容の新しい setup.rake ファイルを作成します。
namespace :deploy do namespace :check do before :linked_files, :set_master_key do on roles(:app), in: :sequence, wait: 10 do unless test("[ -f #{shared_path}/config/master.key ]") upload! 'config/master.key', "#{shared_path}/config/master.key" end end end end end
アプリをデプロイする
上記のすべての手順を完了すると、Rails アプリを Web サーバーにデプロイする準備が整います。
Ctrl を 2 回押し、呼び出されたポップアップに
キャップステージングデプロイと入力します。 Enter を押してデプロイを開始します。
Capistrano がアプリケーションのデプロイに必要なすべてのステップを完了するまで待ちます。 実行 ツールウィンドウ Alt+4 で進行状況を確認できます。

ブラウザーを開き、アプリケーションのアドレスを指定します。 私たちの場合、 http://sample-web-server になります。

Capistrano タスクを実行すると、RubyMine は特別なプロファイル − 一時的な 実行/デバッグ構成を自動的に作成します。 この構成の 設定をカスタマイズできます。例えばタスク引数の指定や環境変数の設定などが可能です。 その後、カスタマイズした構成を 保存して、今後すぐにこの構成を実行できます。
Capistrano 実行 / デバッグ構成
Capistrano タスク(例えば インストールや デプロイなど)を実行すると、RubyMine は対応する Capistrano 一時的な構成を自動作成し、保存できます。 必要に応じて、あらかじめ用意されたテンプレートから Capistrano 実行/デバッグ構成を 手動で作成できます。
Capistrano の実行 / デバッグ構成をカスタマイズするには、次の手順を実行します。
以下のいずれかの方法で 実行 / デバッグ構成 ダイアログを開きます。
メインメニューから を選択します。
ナビゲーションバーが表示された状態( )で、実行 / デバッグ構成セレクターから を選択します。

Alt+Shift+F10 を押してから、 0 を押します。
開いた 実行 / デバッグ構成 ダイアログで、 Capistrano グループから必要な構成を選択し、その設定を指定します。

例: 構成 タブで次の設定を指定できます。
オプション
説明
タスク名
実行する Capistrano タスクの名前を指定します。 自動補完 Ctrl+Space を使用して、使用可能なタスクを確認できることに注意してください。
サンプル:
deploy,install引数
Capistrano タスクに渡す引数を指定します。 引数はスペースで区切る必要があります。
サンプル:
--roles=app,web,--hosts=web-server-1,web-server-2ステージ
希望のステージを選択してください。 ステージは、 アプリケーションの見出しを付けた後に表示される config/deploy.rb ファイルで構成できます。
サンプル:
staging,本番invoke/execute トレースをオンにし、完全なバックトレースを有効にする (--trace)
--traceCapistrano コマンドラインオプションを有効にします。作業ディレクトリ
実行中のタスクが使用する作業ディレクトリを指定します。
環境変数
環境変数(英語)のリストを、セミコロンで区切って名前と値のペアとして指定します。 または、省略記号ボタンをクリックして変数を作成し、 環境変数 ダイアログでそれらの値を指定します。
Ruby 引数
Ruby インタープリターに渡される コマンドライン引数(英語)を指定します。
Ruby インタープリター
タスク実行に使用する Ruby インタープリターを指定します。 プロジェクトのデフォルトの Ruby インタープリターを選択するか、設定済みの Ruby インタープリターのリストから別のインタープリターを選択できます。