2016年5月23日月曜日

【Rails4.2.6】Railsエンジンの懸念点と解決方法

  • 公開日:2016年05月23日

記事概要

Railsのエンジン利用時の、懸念点と解決方法をまとめた記事です。

環境

  • rbenv
  • bundler
  • rails 4.2.6
  • ruby 2.3.1

他言語化

Railsエンジンを他言語化する方法は、通常のアプリケーションと同じです。
他言語化は、こちらの記事通りに実装します。

一点異なるのは、設定ファイルをconfig/application.rbでなく、lib/xxxx_engine/engine.rbに記述することです。

{project_folder}/lib/xxxx_engine/engine.rb

module XxxxEngine
  class Engine < ::Rails::Engine
    isolate_namespace XxxxEngine

    config.i18n.default_locale = :ja
    config.i18n.available_locales = [:en, :ja]

  end
end

capistrano3を使ったdeploy

capistrano3でリリースをしている人は、自動deployができるかを心配するかもしれません。

しかし、その心配は杞憂です。
Gemfileに名称とurlを記述すれば、一般公開されているgemと同じようにインストールも更新もできます。 リポジトリは、プライベートリポジトリでも問題ありません。

{project_folder}/Gemfile

# User my_engine
gem 'my_engine', :git => 'git@git:user/my-engine.git'

また、railsエンジンのtableは、用意されたコマンドでメインアプリにmigrateファイルをコピーできます。 なので、通常のdeploy手順でアプリのリリースが可能です。

ライブラリのバージョン違い

例として、フック先のメインのrailsアプリがrails4.1.3で、サブプロジェクトのrailsエンジンがrails4.2.6でも正常に動作します。
もちろんこの時、メインのrailsアプリはバージョン4.1.3のアプリとして動作します。

とはいえ、あまり気持ちの良いものではないので、理由がない限りバージョンは合わせましょう。
常にrubyとrailsは最新のバージョンを保つべきです。

まとめ

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

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

以上。

PICK UP オススメ書籍

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

参考記事

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

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

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...