- 公開日:2016年05月23日
記事概要
Railsのエンジン利用時の、懸念点と解決方法をまとめた記事です。
環境
- rbenv
- bundler
- rails 4.2.6
- ruby 2.3.1
他言語化
Railsエンジンを他言語化する方法は、通常のアプリケーションと同じです。
他言語化は、こちらの記事通りに実装します。
一点異なるのは、設定ファイルをconfig/application.rbでなく、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と同じようにインストールも更新もできます。
リポジトリは、プライベートリポジトリでも問題ありません。
# 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のエンジン機能は、スタートアップなどで、高速に色々な機能実装をしていく場合に役立ちます。
作成したエンジンは他のプロジェクトでも使いまわせます。
エンジンプロジェクトの資産がたまれば、さらに多くのアプリを高速に量産できるようになります。
うまくエンジンを利用して、疎結合な優れたアプリを量産してください。
以上。
0 件のコメント:
コメントを投稿