Software Development

Ruby on Rails Engine - How To Keep Your Engine Migrations Abstracted From Your Host Rails App

Have you ever worked on building a Rails Engine and wanted to keep the models, the migrations and everything inside the engine rather than using a generator to copy paste them into your host Rails App?
Like
by Jey Geethan | January 16, 2019
Ruby on Rails Engine - How To Keep Your Engine Migrations Abstracted From Your Host Rails App

Have you ever worked on building a Rails Engine and wanted to keep the models, the migrations and everything inside the engine rather than using a generator to copy paste them into your host Rails App? That's a problem everybody faces one time or the other when building Rails Engines to abstract out your huge Rails App. I have found one such solutions that can be helpful for you to keep them separate. Here is a solution for it.


Problem Statement:

Instead of using

  rails g my_engine:install

to copy paste the migrations from engine to your rails app, you want to just keep the migrations inside the Rails Engine and do not bother about it.


Solution: 

Add the following lines to your engine, so that your engine's migration files are added to the rails app as well.

module MyEngine
	  class Engine < ::Rails::Engine
	    isolate_namespace MyEngine
	
	    initializer :append_migrations do |app|
	      unless app.root.to_s.match root.to_s
	        config.paths["db/migrate"].expanded.each do |expanded_path|
	          app.config.paths["db/migrate"] << expanded_path
	        end
	      end
	    end
	  end
	end

Now you can do the following from your rails app to run your migrations as you always do:

   rake db:migrate

Hope it helps you! If it does help you, give me a shoutout below!


Jey Geethan

Jey Geethan is a poet, author and an entrepreneur.


Related Articles

Why Microservices?
Software Development

Why Microservices?

by Jey Geethan | December 16, 2022
I have a few tidbits about why to use microservices and why it makes sense to create few microservices as a side project and learn from the same
Top 5 Tips for Software Development Managers To Conduct Effective 1 on 1s With Your Reports
Software Development

Top 5 Tips for Software Development Managers To Conduct Effective 1 on 1s With Your Reports

by Jey Geethan | October 05, 2020
Some of the effective tips that can enhance your 1 on 1s with your reports. In 2020, software development is one of the major industries which provides millions of jobs. In fact, if you look at the statistics, this industry is poised to grow even further. According to Slashdata, it's expected to reach 45 million developers by 2030. As a manager, it's your responsibility that 1 on 1s are effective and help your reports. I want to talk about a few of the things that make this process really effective.
Do you want to use your macbook as a lap-heater?
Software Development

Do you want to use your macbook as a lap-heater?

by Jey Geethan | August 28, 2019
How many times have you felt the coldness of a meeting room and wish you had brought a heater into the room. Now you can convert your macbook into a heater
How to get informative, color prompts on Mac Terminal or iTerm2
Software Development

How to get informative, color prompts on Mac Terminal or iTerm2

by Jey Geethan | August 14, 2019
This article talks about how to get color prompts on your terminal and add some informative things like current git branch and distinctive colors for current path, username etc.
Can you have a dinner conversation around Pull Requests?
Software Development

Can you have a dinner conversation around Pull Requests?

by Jey Geethan | July 11, 2019
I believe that writing code is a way of communication and it enables developers understand better than just talking about the concepts or logic in plain english words.