Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use ActiveRecord outside Rails?

I'm building a Rails application based on hexagonal architecture.

One of my adapters is storage adapter (maintained as a gem) that manages access to database and provides simple interface for rails application to store and query data in database.

I'd like to use ActiveRecord in this gem with all rake tasks (create, migrate, drop, rollback) for managing database.

How can I use AR outside rails, but with all rake tasks?

like image 742
Kamil Lelonek Avatar asked Dec 21 '14 22:12

Kamil Lelonek


2 Answers

Install it like any other gem

gem install activerecord

Then you configure it somewhere like this

ActiveRecord::Base.establish_connection(
  :adapter  => 'mysql',
  :database => 'database',
  :username => 'user',
  :password => 'password',
  :host     => 'localhost')

Models can then inherit as normal from ActiveRecord::Base

You get all of the rake tasks but you do have to do some extra configuration since you will not have the Rails. Here is the link inside of activerecord for how to configure that stuff.

Database tasks

like image 147
Austio Avatar answered Oct 08 '22 20:10

Austio


An updated solution is the standalone_migrations. Basically after doing the configuration for the gem and creating the configuration, you have access to all the ActiveRecord niceties. Rake tasks included!

Also, I made a small generator for scaffolding simple scripts that have access to ActiveRecord out of the box: nrb - Ninja Ruby.

like image 34
shuriu Avatar answered Oct 08 '22 19:10

shuriu