Hi!

I wrote a gem which does exactly 
this: https://github.com/consultingMD/schlepper. 

It's an extraction of a basic system I had inside of our monorail. It has 
been in use in production for us for about 18 months. It's modeled similar 
to AR migrations by design. Task classes are subclasses of a base class. 
The task runner creates a table similar to AR migrations. The task class 
file names are versioned exactly like AR migrations. Upon running the rake 
command to run the tasks, it performs the same system as AR migrations. It 
finds all task files not yet run and executes them one by one. The one 
major difference is the design of the task running system is each class is 
independent. If one fails, the task runner continues. AR migrations are 
designed for linearity. 

On Thursday, November 23, 2017 at 4:35:50 PM UTC-8, Vitaliy Klachkov wrote:
>
> Hello!
>
> Sorry if this proposal is a duplicate, I couldn't find anything related.
>
> Quite often I have to run some actions on my application starts.
> Those actions should be executed just once like database migrations.
>
> Once an action is executed, it should never be invoked again. 
>
> Right now I do what I need in migrations which is not right as migrations 
> go for database related logic. 
> My actions are not related to database (e.g. clean some files, do 
> something with cache, send something to an external service, etc). 
>
> I can use those actions in initialiazers with `if` conditions, but that 
> looks quite weird. 
>
> My proposal is simple. 
> Please consider adding a DB migrations-like mechanism for actions that 
> should be run once on start. 
>
> Thank you.
>
> Best wishes, 
> Vitaliy.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to