2016年5月21日土曜日

【Rails4.2.6】Railsエンジンをアプリケーションで利用する

  • 公開日:2016年05月21日

記事概要

Railsのエンジン機能を、アプリケーションで利用する方法をまとめた記事です。

環境

  • rbenv
  • bundler
  • rails 4.2.6
  • ruby 2.3.0

エンジンプロジェクトの設定

作成したRailsエンジンプロジェクトをアプリケーションにフックするには、Gemfileにエンジン名URL(パス)を記述します。
ここでは、user_engineという名称のユーザーRailsエンジンがあると仮定して話を進めます。

{project_folder}/Gemfile

gem 'user_engine', :git => 'git@url.git'

gitのurlはプライベートリポジトリurlでも問題ありません。

インストールは、他のgemと同じようにbundleコマンドでインストールします。

terminal

cd {project_folder}/

bundle install

エンジンプロジェクトのマウント

gemをインストールしたら、アプリケーションにエンジンをマウントします。

{project_folder}/config/routes.rb

mount UserEngine::Engine, at: "/user"

アプリケーションのroutes.rbファイルにこの行を記述することで、エンジンがアプリケーションの/userパスにマウントされます。

テーブル作成

エンジンプロジェクトのデータベースがアプリケーションに必要な場合は、エンジンのmigrationをアプリケーションにコピーします。

以下のコマンドを利用します。

terminal

cd {project_folder}/

bundle exec rake user_engine:install:migrations

Copied migration 20160520033732_create_tests.user_engine.rb from user_engine

コマンド実行後に{project_folder}/db/migrate/フォルダにエンジンからコピーしたマイグレーションが追加されていることを確認します。
存在を確認したら、通常のmigrateコマンドを叩きます。

terminal

bundle exec rake db:migrate RAILS_ENV=development

tableが作成されたら準備完了です。

アプリ立ち上げ

アプリケーションを立ち上げます。

terminal

cd {project_folder}/

// サーバー立ち上げ
rbenv exec bundle exec rails s -b 0.0.0.0

成功した場合はサーバーが立ち上げり、プロジェクトでフックしたエンジンの機能が利用できるようになっています。

まとめ

Railsのエンジン機能は、スタートアップなどで、高速に色々な機能実装をしていく場合に役立ちます。
作成したエンジンは他のプロジェクトでも使いまわせます。
エンジンプロジェクトの資産がたまれば、さらに多くのアプリを高速に量産できるようになります。

うまくエンジンを利用して、疎結合な優れたアプリを量産してください。

以上。

PICK UP オススメ書籍

運営サイト(railsで作成しています)

参考記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...