Ruby on Rails と Bluemix を使用してブログ・アプリケーションを作成する

2014年 10月 23日
PDF (1201 KB)
 
Photo of Lucas Sousa Lima

Lucas Sousa Lima

Software Developer, Big Data University

 

Photo of Thiago de Aguiar Leal Domingues

Thiago de Aguiar Leal Domingues

Software Developer, Big Data University

@thiagoald on Twitter

Photo of Luiz Gustavo Ferraz Aoqui

Luiz Gustavo Ferraz Aoqui

Software Developer, IBM

@luiz_aoqui on Twitter

Photo of Antonio Cangiano

Antonio Cangiano

Software developer and technical evangelist, IBM

@acangiano on Twitter

IBM Bluemix™ にサインアップ
無償のサービス、ランタイム、インフラを含むクラウド・プラットフォームが、新たなモバイルや Web アプリのクイックな構築とデプロイを実現します。

通常、アプリケーションを作成してクラウドにデプロイする場合、サーバーのセットアップや、自分が信頼する Linux ディストリビューションによるサーバーの構成、必要なランタイムのインストール、データベースのインストールと構成、ライブラリーの依存関係への対処、そしてサーバーのセキュリティー確保などに多くの時間がかかります。しかし、IBM Bluemix を使用すれば、コードを作成することだけに専念することができ、わずか数秒でデプロイすることも可能になります。

簡単なブログを作成することによって、Bluemix 上で Rails アプリケーションを作成してデプロイするのがいかに簡単であるかを示します。

この記事では、IBM BluemixRuby on Rails を使い始めるプロセスを紹介するためのサンプル・アプリケーションとして、必要最小限のブログを作成します。私たちが紹介するのは、Rails アプリケーションを作成するステップ、SQLDB データベース (IBM DB2 で動作する Bluemix サービス) を作成するステップ、作成したデータベースにアプリケーションを接続するステップ、そしてアプリケーションをデプロイして実行するステップです。この簡単なブログを作成することによって、Bluemix 上で Rails アプリケーションを作成してデプロイするのがいかに簡単であるかを明らかにします。

必要となるもの

 
  • Bluemix アカウント。無料の試用版にサインアップしてください。
  • Ruby 1.8.7 ~ Ruby 2.0.0 のいずれかのバージョン (Bluemix によってサポートされているバージョン)
  • Rails フレームワーク 3.2.13 (Bluemix と ibm_db gem によってサポートされているバージョン)
  • ibm_db gem
  • Cloud Foundry CLI ツール
  • Sublime Text などのテキスト・エディター/IDE

このアプリケーションでは、Ruby 1.9.3 と Rails 3.2.13 を使用します。以下の手順を開始する前に、確実に上記のソフトウェアが皆さんのローカル開発マシンにインストールされている状態にしてください。

この記事は、Ruby プログラミング言語と Ruby on Rails フレームワークについて十分理解していることを前提としているため、読者がこの前提を満たしていると助けになりますが、この記事を読み進めていく上で必ずしも必要というわけではありません。

ステップ 1. Ruby on Rails アプリケーションを作成する

 
  1. コマンド・プロンプトを開き、新しい Rails アプリケーションを作成します。この例では、新しいアプリケーションの名前は以下に示すように「Blog」です。
    $ rails new Blog
    Rails アプリケーションを作成している画面のスクリーン・ショット

    ご使用の環境に複数のバージョンの Rails がインストールされている場合、使用するバージョンをここで以下のように指定することができます。

    $ rails _3.2.13_ new Blog
  2. 正常に動作していることの簡単なテストとして、別のコマンド・プロンプトを開き、Rails サーバーを起動します。rails new コマンドで作成されたアプリケーション・ディレクトリー (この例では、Blog ディレクトリー) 内で、必ず以下のコマンドを実行します。このコマンドを実行すると、開発モードで WEBrick が起動され、ポート 3000 で HTTP リクエストを受信するようになります。
    $ rails s
    Rails サーバーを起動する画面のスクリーン・ショット
  3. 起動したばかりのローカル Web サーバーに対してリクエストを送信するため、ブラウザーで http://localhost:3000 にアクセスします。すると、以下に示すようなページが表示されるはずです。これにより、サーバー上でアプリケーションが正常に実行されていることが確認されます。これでサーバーを支障なく停止することができます (例えば、CTRL+C を押して停止します)。 Rails のデフォルトの index ページのスクリーン・ショット

ステップ 2. モデル、ビュー、コントローラーを作成する

 

このアプリケーションを作成するにあたっては、scaffold を生成することにします。scaffold は、Rails によって提供されるスターター・テンプレートで、ブログ投稿のモデル、コントローラー、そして関連するビューをバンドルしています。

  1. 以下のコマンドを使用して、新しい scaffold を作成します。各投稿にはテキストのタイトルと本文があるため、この投稿 (Post) モデルには、データベース内で string 列 および text 列として表される、title および body という 2 つのフィールドがあります。
    $ rails generate scaffold Post title:string body:text

    以下のスクリーン・ショットには、コマンドが自動的に生成した一連のファイルが表示されています。この一連のファイルには、先ほど指定したフィールドに従ってデータベース内にテーブルを作成する上で必要な情報が記述された、db/migrate 内のマイグレーション・ファイルが含まれています。

    Rails の scaffold を生成している画面のスクリーン・ショット
  2. scaffold を生成した後、開発データベースに実際の Posts テーブルを作成する必要があります。Rails フレームワークでは、Rails の原則である「設定より規約」を守り、デフォルトでは SQLite データベースを事前に構成してあります。テーブルを作成する上で必要なことは、マイグレーション・ファイルを実行することのみです。具体的には、以下のコマンドで作成することができます。
    $ rake db:migrate

    Rake とは、Rails フレームワークで広く採用されているタスク管理ツールです。各 Rails プロジェクトには、一連の Rake タスクが組み込まれています。この例では、データベースのマイグレーションを実行しただけで、Posts テーブルが作成されました。

ステップ 3. Rails アプリケーションを編集する

 
  1. 最初に、作成したアプリケーションのホーム・ページを変更します。エディターを使用して config/routes.rb を開き、アプリケーションの / (ルート) パスが posts コントローラーの index アクションで処理されなければならないことを Rails に知らせるために以下のコードを追加します。
    root :to => 'posts#index'
    routes.rb を編集する画面のスクリーン・ショット
  2. 次に、パブリック・フォルダーにアクセスし、index.html ファイルが Web サーバーによって表示されることがないように、このファイルを別の名前 (index_.html など) に変更するか削除します。
  3. その後、再度 Rails サーバーを起動して変更を確認します。確認後は、サーバーを停止しても構いません。 scaffold のデフォルトのインターフェースのスクリーン・ショット

ステップ 4. Ruby on Rails アプリケーションを Bluemix 上で作成する

 
  1. Bluemix Web サイトにアクセスし、ログインします。Bluemix のアカウントをまだ作成していない場合は、無料のアカウントを作成してください。
  2. ログインすると、ダッシュボードにリダイレクトされます。ダッシュボードには、「Applications (アプリケーション)」セクションと「Create an Application (アプリケーションの作成)」リンクが見つかるはずなので、このリンクをクリックします。

    表示されるカタログには、選択可能なコンポーネントが多数あるはずです。通常、任意のランタイムを選択し、必要に応じてコンポーネントやサービスを追加します。

    この例では Rails アプリケーションを Bluemix 上で作成してデプロイしようとしているため、Ruby on Rails ランタイムを選択し、作成するアプリケーションの名前とホスト名を「Name (名前)」と「Host (ホスト)」にそれぞれ入力して、「CREATE (作成)」をクリックします。

    ホスト名は Bluemix エコシステム内で一意でなければならないため、名前を工夫する必要があるかもしれませんが、一意のホスト名にすれば、アプリケーションの URL も一意になり、いつでも共有可能な状態になります。

    Bluemix Rails アプリケーションに名前を付ける画面のスクリーン・ショット

    クリックして大きなイメージを見る

    「CREATE (作成)」をクリックすると、サンプル Rails アプリケーションが Bluemix 上で実行され、皆さんのダッシュボードに表示されます。このアプリケーションのリンクをクリックすることで、クラウド上で実行されているサンプル・アプリケーションにアクセスすることができます。

  3. この Bluemix アプリケーションには投稿情報を保管するようにしたいので、その情報を永続化するためのデータベースを作成する必要があります。このアプリケーションでは、IBM DB2 をベースとする SQLDB サービスを使用します。そのために、皆さんの「Dashboard (ダッシュボード)」から「Services (サービス)」にアクセスし、「Add a Service (サービスの追加)」をクリックします。
  4. 「Data Manaement (データ管理)」カテゴリーで「SQLDB」をクリックします。作成した Rails アプリケーションを選択し、追加するサービスの名前として任意の名前 (ここでは「blogSQLDB」) を入力し、「CREATE (作成)」をクリックします。 Bluemix 上で SQLDB データベースを追加する画面のスクリーン・ショット

    クリックして大きなイメージを見る

    アプリケーションを再起動するよう促すプロンプトが表示されたら、「OK」をクリックします。

  5. 作成したばかりの Bluemix アプリケーションの URL にアクセスすると、皆さんを歓迎するページが表示されることにお気付きになるかと思います。この「Welcome (ようこそ)」メッセージを表示するアプリケーションは、Rails ランタイムを選択するとすぐに Bluemix によって提供されるサンプル・アプリケーションです。この Bluemix のサンプル・アプリケーションは、クラウド上で何の問題もなく実行されています。私たちは、このアプリケーションにデータベース・サービスも追加しています。

    しかし、このサンプル・アプリケーションは私たちの Blog アプリケーションではありません。ここでこのサンプル・アプリケーションに注目するのは、単に私たちのアプリケーションを Bluemix にデプロイする上で必要な情報を指定する manifest.yml という名前の重要なファイルがこのサンプル・アプリケーションに含まれているからです。

    ここでの作戦は、サンプル Bluemix アプリケーションからこの manifest.yml ファイルを取得し、私たちのローカル Blog アプリケーション内で使用するというものです。こうすることで、現在 Bluemix 上で実行されているサンプル・アプリケーションを実行し続けるのではなく、私たちの Blog アプリケーションを Bluemix へプッシュできるようになります。

    皆さんのダッシュボードの「Applications (アプリケーション)」セクションで、新しく作成したアプリケーション・タイルをクリックします。このアプリケーション・タイルから、ページの右上にある「VIEW QUICK START (クイック・スタートの表示)」ボタンをクリックすることができるはずです。このボタンをクリックすると以下のスクリーン・ショットに示されているように、アプリケーションを開始するためのウィンドウが表示されます。次に「Download the starter application package (スターター・アプリケーション・パッケージのダウンロード)」をクリックします。

    Bluemix アプリケーションの開始画面のスクリーン・ショット
  6. パッケージを展開し、展開された manifest.yml ファイルをコピーして、ローカル Blog アプリケーションのディレクトリーに貼り付けます。 Rails アプリケーションに manifest.yml ファイルを追加する画面のスクリーン・ショット

    前述のように、manifest.yml ファイルはアプリケーションをデプロイするときに Bluemix で使用されます。このファイルには、追加されたサービス (ホスト、インスタンスの数など) に関する情報が記載されています。

    manifest.yml の内容を示すスクリーン・ショット

    : manifest.yml ファイルを取得する別の方法として、JazzHub にあるリポジトリーからダウンロードする方法があります。この方法で取得した場合は、サービス名、ホスト、その他の情報を皆さんのアプリケーションに関連する内容に変更することを忘れないでください。

ステップ 5. Bluemix 上で Blog アプリケーションをデプロイするための準備をする

 
  1. 私たちのアプリケーションは IBM DB2 で動作する SQLDB サービスを使用しているため、このローカル Blog アプリケーションは DB2 とやりとりできなければなりません。DB2 とやりとりするには、皆さんのプロジェクトの Gemfile に「gem 'ibm_db'」という記述を追加することで、ibm_db アダプターをインストール対象に含める必要があります。

    gem 'sqlite3'」という行は、私たちの Bluemix デプロイメントでは使用しないため、コメント・アウトするか削除してください。ファイルの上の方に「ruby '1.9.3'」(またはご使用の Ruby のバージョン) という記述を含めることで、Ruby のバージョンを設定します。

    Gemfile を編集する画面のスクリーン・ショット
  2. 以下のコマンドを実行し、ローカル開発環境に gem をインストールします。
    $ bundle install

    : ibm_db アダプター (Ruby gem) をインストールすると、アプリケーションでは DB2 をローカルでセットアップして構成するまで、または (例えば、開発モードでのみ) データベースを SQLite に再度戻すまで、rails サーバーをローカルで起動して実行することができなくなります。

  3. ここで、本番環境の設定を変更しましょう。config/environments/production.rb を開き、asset 関連の 2 つの構成パラメーターを true に設定します。
    config.assets.compile = true
    config.serve_static_assets = true
    production.rb ファイルを編集する画面のスクリーン・ショット
  4. データベース (database.yml) との接続を設定することは、Rails アプリケーションをデプロイする上で重要なステップとなります。ただし、Bluemix 上に Ruby on Rails アプリケーションをデプロイする場合は、database.yml ファイルは書き直されて VCAP_SERVICES 変数から自動的に読み込むように設定されます。そのため、皆さんが追加したデータベース・サービスに対する接続を設定する必要はありません。

    以上は、Bluemix における開発をより迅速に行えるようにする方法の 1 つの例であり、そのためにコンポーネントとサービスが互いにやりとりする方法を簡素化しています。

ステップ 6. Bluemix 上でアプリケーションをデプロイする

 

コマンド・プロンプトを開き、以下の cf コマンドを実行します。まだ cf コマンド・ラインをインストールしていない場合は、前述の (アプリケーションを開始するためのウィンドウにある)「Get Started with <appname> (<アプリケーション名> を開始)」メニューからインストールすることができます。

  1. まず、Bluemix に接続します。
    $ cf api https://api.ng.bluemix.net
  2. 次に、Bluemix にログインします。
    $ cf login -u <user.email>

    パスワードを要求されたら入力します。ここで入力する e-メール・アドレスとパスワードは、Bluemix に登録したときに使用したものです。

  3. Bluemix 環境の中でマイグレーションを実行することで、SQLDB データベースにテーブルを作成します。-c オプションでコマンドを指定すると、コードをアップロードした直後にそのコマンドを実行することができます。この例では、指定したコマンドによってデータベースをマイグレーションしています。
    $ cf push <appname> -c "bundle exec rake db:migrate"

    ヒント: アプリケーションをデプロイする際には、アプリケーションがプッシュされている間、アプリケーションのログを追いかけられるように、別のコマンド・プロンプトを開き、以下の cf コマンドを実行してください。

    $ cf logs <appname>

    : 上記の cf push を実行すると、アプリケーションはアプリケーション・サーバーへの接続を試行し続けますが、まだアプリケーション・サーバーを起動していないために失敗します。私たちは、マイグレーションしか実行していません。ログを確認して、テーブルの作成が完了していることを確認してください。作成されていれば、開始操作を取り消すことができます。

  4. ここまででマイグレーションの実行が完了しているので、以下のコマンドでアプリケーションをデプロイすることができます。
    $ cf push <appname> -c "null"

    cf コマンド・ライン・ツールは -c オプションに最後に渡されたコマンドを保管しておき、私たちがアプリケーションをデプロイするたびにこのコマンドを使用します。-c オプションに “null” を渡すことで、直前のコマンドが消去され、ビルドパックのデフォルトの開始スクリプトを使用してアプリケーション・サーバーを実行することができます。

  5. おめでとうございます。これで Ruby on Rails アプリケーションが Bluemix 上で実行されている状態になりました! Bluemix のクラウドに Rails アプリケーションをプッシュしている状況での「コマンド プロンプト」のスクリーン・ショット
  6. Bluemix 上で皆さんのアプリケーションのリンクをクリックすることで、ブラウザー内にアプリケーションを表示します。 Rails Blog アプリケーションのサンプル

    クリックして大きなイメージを見る

    ここまでの手順に従っていれば、このスクリーン・ショットと前のスクリーン・ショットの間に大きな違いが 2 つあることに気付くはずです。1 つ目は、私たちが投稿サンプルを作成したことです。2 つ目は 基本アプリケーションがいくらか整って見えるように HTML/CSS で Web ページ・デザイン要素をいくつか追加したことです。リポジトリーからコードをチェックアウトすると、上記の多少整えられたページを生成する実際のコードを見ることができます。

  7. Bluemix 上で実行されている SQLDB サービスに含まれるテーブルとデータを確認したいと思う場合は、「Dashboard (ダッシュボード)」から「Services (サービス)」にアクセスし、皆さんが追加した SQLDB サービスをクリックして、コンソールを起動してから「Database Viewer (データベース・ビューア)」をクリックします。スキーマの中から、「U」で始まるスキーマ (例えば、U71290) を選択します。これはサービスのユーザー名です。テーブルで、「POSTS (投稿)」 をクリックし、「Sample Data (サンプル・データ)」をクリックしてデータを参照します。 Bluemix 上で SQLDB データベースを調べる画面のスクリーン・ショット

まとめ

 

この記事で行ったことを簡単にまとめてみましょう。

まず、ローカル Rails アプリケーションを作成し、私たちの好みに合うように調整しました。続いて Bluemix アプリケーションを作成し、そこに最新の (そして常に増え続けている) カタログで提供されているデータベース・サービスから 1 つのデータベース・サービスを追加しました。さらに、サンプル Bluemix アプリケーションの事前構成済み manifest.yml ファイルを使用して、ローカル・アプリケーションを Bluemix へ (cf コマンド・ライン・ツールを使用して) デプロイし、デフォルトでロードされるサンプル・アプリケーションを置き換えるようにしました。

この基本的なブログ・アプリケーションは、それほど興味深いものでも、有用なものでもありません。本当に興味深いのは、ごくわずかなコマンドを実行すれば、私たちが作成した簡単な Rails アプリケーションが Bluemix 上で正常にデプロイされ、ポスト情報を格納および取得するための SQLDB サービスが利用できるようになったことです。

これと同じ手法は、皆さんが作成する可能性があるどのような Rails アプリケーションを (それがどんなに複雑であっても) デプロイする際にも、必要とされるだけの Bluemix のコンポーネントやサービスを採り入れる際にも、使用することができます。

IBM によって完全に管理され、IBM SoftLayer のクラウド上で稼働するエンタープライズ・レベルの環境を活用すると、デプロイメントの時間と手間が節約されます。Rails を使用して簡単な概念実証を作成していようと、ミッション・クリティカルなアプリケーションを作成していようと、Bluemix が対応します。

コメントの追加

注意: HTML コードは、コメント内ではサポートされません。


残り 1000 文字

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=986271
ArticleTitle=Ruby on Rails と Bluemix を使用してブログ・アプリケーションを作成する
publish-date=10232014