My rails app. uses mysql database and I need to generate .sqlite3.databases. Is it possible to use activerecord and rails models for it? We are trying now to use models namespaced by Remote:: module but by this way we can't start concurrent generators.
1 Answer
In your remote models, you want to connect to a separate database using #establish_connection:
# config/database.yml
remote_development:
adapter: sqlite3
database: db/development.sqlite3
remote_production:
adapter: sqlite3
database: /usr/local/remote/myapp.sqlite3
# app/models/remote_model.rb
class RemoteModel < ActiveRecord::Base
establish_connection "remote_#{Rails.env}"
self.abstract_class = true
end
# app/models/remote_user.rb
class RemoteUser < RemoteModel
end
Note the abstract_class setter: this means the class in question doesn't have an underlying table: it's used for configuration purposes only.
2 Comments
Andrey Kuznetsov
I need to create different sqlite databases. Generation processes may be concurrent. I need dynamic database names...
François Beausoleil
establish_connection also accepts a Hash, thus you can say "RemoteModel.send(:establish_connection, :adapter => "sqlite3", :database => Rails.root + "tmp/#{Time.to_i}.sqlite3")