最初のRailsアプリとしてのDiscourse

Shawn Holmes
Apr 9, 2013 • 6 min read

2018年4月4日 更新

Discourse Vagrant開発環境のインストールは、現在サポート・メンテナンスが終了しています。

現在の開発環境インストールガイドは、WindowsmacOSUbuntu向けにmeta.discourse.orgでご確認いただけます。

元の投稿:

あなたが開発者でありながら、Ruby on Railsに触れたことがないとしても、その気持ちはよく分かります。私たちもかつてそうでしたから!新しい言語やコードベースに飛び込むと、まるでお風呂に入れられるこの猫のような気分になることがあります。

Discourseには、GitHubmeta.discourseに素晴らしくサポーティブなコミュニティがあり、私たちもお手伝いする準備ができています。これは、ローカルのRuby on Rails環境を構築するための最初のガイドであり、Discourseを触り始めるためにカスタマイズされています。

ステップ1:VirtualBox


日常的に行わない方にとって、*nix系の環境を構築するのは敷居が高く感じられることがあります。私たちにとって、最も手軽な方法は仮想マシンという安全な存在を利用することです。仮想マシンは、まったく異なるオペレーティングシステムへの入り口となります。私たちが推奨するのはVirtualBoxです。無料でオープンソースであり、Windows、Linux、Mac、Solarisで動作します。VirtualBoxのサイトからダウンロードしてください。

www.virtualbox.org/wiki/Downloads

この記事を執筆時点では、4.3.26が最新バージョンであり、問題なく動作しています。ダウンロードしてインストールした後、VMのパフォーマンスに役立ついくつかの注意点があります。

  1. ソリッドステートドライブ(SSD)を使用する。VMはシステム全体をエミュレートします。このエミュレーションにはパフォーマンスコストが伴い、CPUやメモリに多少の負荷がかかりますが、特にディスクI/Oに影響します。従来のディスクからソリッドステートドライブに移行することで、VMの速度を大幅に向上させることができます。
  2. ドライブを2台用意する。VirtualBoxをプライマリドライブにインストールし、そのプライマリドライブ上に存在するVMを実行すると、ハードドライブのリソースを奪い合うことになります。VirtualBoxの実行に必要なリソース管理とVM内部のエミュレートされたリソースの間で競合が生じるほど、プライマリディスクが消耗し、パフォーマンスが低下します。可能であれば、作業ディレクトリ(DiscourseおよびVM用)をプライマリディスク以外のディスクに置くようにしてください。理想的には、セカンダリディスクもSSDであることが望ましいです!
  3. VMのメモリを増やす。私たちが用意したVMイメージはデフォルトで1 GBのメモリに設定されており、4 GBのマシンでも動作できるようになっています。ただし、これは実用上の最小値であり、VMのメモリを2 GBまたは4 GBに増やすことでパフォーマンスが大幅に向上します。そのためには、システムのDISCOURSE_VM_MEM環境変数を希望するメモリ量に変更してください。

また、開発マシンには約8 GBの物理メモリを搭載することをお勧めします。VMは大食いで、カバが大理石を食べるようにRAMを消費します。

ステップ2:Vagrant


VirtualBoxがインストールされたら、次はVMを起動する時です。DiscourseはVM構築に必要なすべての情報をDiscourseコードベース自体の中に保持しています!

これはVagrantの魔法によって実現されています。Vagrantは、もう一つの無料オープンソースツールで、必要なすべての設定が整った状態でVMをパッケージ化し初期化するために使用されます。Vagrantのおかげで、正しいバージョンのRubyがインストールされているか、Railsが最新かどうか、あるいはnginxやthin、その他Discourseを構成するさまざまな部品のインストール方法を調べる必要はありません。

すべてはVagrantfileに格納されたVagrantの中にあり、たった一つのコマンドラインで簡単に起動できます。Discourseを操作するためには、Vagrant 1.7.2以上が必要です。Vagrantのダウンロードページからダウンロードしてください。

vagrantup.com/downloads

インストールは説明不要で行えるはずです。今すぐ進めてください。お待ちしています。

ステップ3:Git


ソース管理は、変更を追跡し変更から自分を守る手段としてだけでなく、コラボレーションや貢献を容易にする手段としても非常に重要です。

Gitを初めて使う方は、SubversionなどのSCMを使った経験があったとしても、少し敷居が高く感じるかもしれません。最も手軽に始めるには、公式のGitHubクライアントをお勧めします。

インストールしたら、GitHub上のDiscourseリポジトリにアクセスし、Clone in Windows / Macボタンをクリックしてください。

これにより、リポジトリのコピーがあなたのマシンにダウンロードされ、GitHubツールがそれをローカルリポジトリに読み込みます。左側の「local」の下にある「repositories」セクションをクリックすると、クローンしたすべてのリポジトリが表示されます。リポジトリの中を覗くには、画鋲の右側にある青い矢印をクリックしてください。

Gitの複雑さについては、まったく別のブログ記事が必要になるため、専門家に任せることにします。今のところ、三つのヒントをお伝えします。

  1. 可能であれば、VirtualBoxをインストールしたディスクとは別のディスクに作業フォルダを設定してください。GitHubアプリケーションの上部にあるtoolsオプションから行います(上のスクリーンショットのギアアイコンをご確認ください)。
  2. リポジトリにカーソルを合わせると、プロジェクトの現在の作業フォルダが表示されます。

  1. プロジェクトでコマンドシェルを開くには、プロジェクトを右クリックしてopen a shell hereを選択するか、プロジェクトのツール(ギアアイコン)メニューを再度使用してください。

最後の二つのポイントを覚えておいてください。次のセクションで必要になります!

Discourseプロジェクトをローカルにクローンしたことで、公式のVagrant設定も一緒に取得されています。これがVirtualBox内のVMを動かすことになります。このパズルのピースをすべて組み合わせてみましょう!

ステップ4:VMの起動と接続


プロジェクトのGitHub for WindowsまたはMacツール(ギア)メニューを使用して、open a shell hereを選択してください。

これにより、現在のプロジェクトフォルダでコマンドプロンプトが開きます。そこから次のように入力してください。

vagrant up

これでVMが起動します。Vagrantは公式のDiscourseサイトに接続し、私たちが用意したVMイメージをダウンロードし(注意:これには時間がかかる場合があります)、展開して、環境を立ち上げるために必要なすべてのサブシステムを有効化します。VirtualBoxが数回プロンプトを表示する場合がありますが、その要求を承認してください。

VMが起動すると、コマンドプロンプトに戻ります。

次は、VMに接続してRailsサーバーを起動する時です。プロジェクトフォルダで開いているシェルから、次のように入力してください。

vagrant ssh

接続したら、あといくつかのコマンドで完了です。vagrantディレクトリに移動してください。

cd /vagrant

いよいよRuby on Railsと対話する時です。次のようにRailsインストーラーを実行してください。

bundle install

次に、Ruby on Railsに開発データベーススキーマをローカルリポジトリにマイグレートするよう指示します。これはrakeを使って行います。rakeはRubyのmake版であり、Antのような機能を持っています。

bundle exec rake db:migrate

ついに、HTTPリクエストを受け付ける準備が整ったRailsサーバーを起動する時が来ました。

bundle exec rails s -b 0.0.0.0

私たちのVM設定により、このRailsサーバーはポート4000でリクエストを待ち受け始めます。サーバーが起動したら、ローカルワークステーションのウェブブラウザを開き、http://localhost:4000にアクセスしてください。

完成です!上のスクリーンショットでご確認いただけるように、Discourseは確かにポート4000でローカルに動作しており、バックグラウンドではサーバーを起動するために使用したSSHクライアント内でDiscourseの内部処理が動いているのが見えます。

最初のリクエストは、DiscourseがサブシステムとキャッシュのプロセスをInitializeし始めるため、少し時間がかかる場合があります。最初のページ読み込みに5〜10秒かかることは珍しくありません。ただし、これをはるかに超えるページ読み込み時間が発生している場合は、PCの構成をお知らせください。Discourseコミュニティは、より良いVMパフォーマンスのための改善策を積極的に探しています。

ステップ5:シャットダウン


作業が終わったら、Ctrl+CでRailsサーバーを終了し、VM内のコマンドプロンプトに戻ります。終了するには次のように入力してください。

exit vagrant halt

これにより、SSHセッションが終了し、VMが停止してリソースが解放されます。

おめでとうございます!これで、Discourseの動作するコピーが手元に揃い、いつでもハッキングに取り掛かれる状態になりました。また、そのハッキングを支えるための完全なRuby on Rails環境も整っています。

さあ、ハッキングを始めましょう。そして、ぜひ構築したクールなものをプロジェクトにプルリクエストとして貢献することを検討してください!プルリクエストとしてプロジェクトに還元しましょう!

原文はこちら:


Good Loopでは、Discourseのセルフホスティングを安価で提供しています。開発元であるCDCK社の協力のもと、公式ブログ記事の翻訳・公開など、日本での普及にも努めています。

詳しくはこちら: Discourseの導入・運用支援・コンサルティング – Good Loop