1

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 1

4

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.

Sign up to request clarification or add additional context in comments.

2 Comments

I need to create different sqlite databases. Generation processes may be concurrent. I need dynamic database names...
establish_connection also accepts a Hash, thus you can say "RemoteModel.send(:establish_connection, :adapter => "sqlite3", :database => Rails.root + "tmp/#{Time.to_i}.sqlite3")

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.