tutorial rails práctico generate español desarrollo aplicaciones ruby-on-rails ruby activerecord scripting

ruby on rails - práctico - ¿Cómo usar ActiveRecord en un script de ruby fuera de Rails?



ruby on rails tutorial (3)

Tengo un pequeño script de ruby ​​en el que me gustaría usar ActiveRecord para acceder fácilmente a un modelo de base de datos. ¿Cuál es la mejor manera de hacerlo?


Puede crear un script mínimo con una base de datos SQLite en memoria en solo unas pocas líneas. Esta respuesta también está disponible como una Gist .

Inspirado en la publicación del blog de Jon Leighton sobre cómo publicar un impresionante informe de errores de ActiveRecord.

# Based on http://www.jonathanleighton.com/articles/2011/awesome-active-record-bug-reports/ # Run this script with `$ ruby my_script.rb` require ''sqlite3'' require ''active_record'' # Use `binding.pry` anywhere in this script for easy debugging require ''pry'' # Connect to an in-memory sqlite3 database ActiveRecord::Base.establish_connection( adapter: ''sqlite3'', database: '':memory:'' ) # Define a minimal database schema ActiveRecord::Schema.define do create_table :shows, force: true do |t| t.string :name end create_table :episodes, force: true do |t| t.string :name t.belongs_to :show, index: true end end # Define the models class Show < ActiveRecord::Base has_many :episodes, inverse_of: :show end class Episode < ActiveRecord::Base belongs_to :show, inverse_of: :episodes, required: true end # Create a few records... show = Show.create!(name: ''Big Bang Theory'') first_episode = show.episodes.create!(name: ''Pilot'') second_episode = show.episodes.create!(name: ''The Big Bran Hypothesis'') episode_names = show.episodes.pluck(:name) puts "#{show.name} has #{show.episodes.size} episodes named #{episode_names.join('', '')}." # => Big Bang Theory has 2 episodes named Pilot, The Big Bran Hypothesis. # Use `binding.pry` here to experiment with this setup.


Vale la pena señalar que en versiones posteriores de activerecord (v3 +) necesita requerirlo como tal

require "active_record"


require ''active_record'' # Change the following to reflect your database settings ActiveRecord::Base.establish_connection( adapter: ''mysql2'', # or ''postgresql'' or ''sqlite3'' or ''oracle_enhanced'' host: ''localhost'', database: ''your_database'', username: ''your_username'', password: ''your_password'' ) # Define your classes based on the database, as always class SomeClass < ActiveRecord::Base #blah, blah, blah end # Now do stuff with it puts SomeClass.find :all some_class = SomeClass.new