Ho un piccolo script rubino in cui mi piacerebbe utilizzare ActiveRecord per accedere facilmente a un modello di database. Qual'è il miglior modo di farlo?Come utilizzare ActiveRecord in uno script rubino all'esterno di Rails?
53
A
risposta
84
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
10
Vale la pena notare che nelle versioni successive di ActiveRecord (v3 +) è necessario richiedere in questa maniera
require "active_record"
7
È possibile creare uno script minimo con un database SQLite in memoria in pochi Linee. Questa risposta è anche available as a Gist.
Ispirato da Jon Leighton's blog post su come pubblicare un rapporto sui bug di 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.
Problemi correlati
- 1. Come utilizzare ActiveRecord all'esterno di Rails?
- 2. Come utilizzare più funzioni di aggregazione contemporaneamente in Rails/ActiveRecord?
- 3. come utilizzare il ping in uno script
- 4. Eseguire lo script rubino in background senza utilizzare lo schermo
- 5. Upsert in Rails ActiveRecord
- 6. Script di shell di origine in ambiente all'interno di uno script rubino
- 7. Come utilizzare l'esecuzione parallela in uno script di shell?
- 8. Come posso ricaricare uno script in IRB?
- 9. Come posso utilizzare uno script per creare utenti in mongodb?
- 10. Come utilizzare il comando 'history-c' in uno script bash?
- 11. Ruby on Rails ActiveRecord: pluralization
- 12. Gemme di rubino in script di rubini stand alone
- 13. Come utilizzare GIMP all'interno di uno script Python?
- 14. come utilizzare uno script di shell per supervisionare un programma?
- 15. In ActiveRecord di Rails, a cosa serve?
- 16. Rubino/Rails collezione in collezione
- 17. Rails: sovrascrivere il metodo di associazione ActiveRecord
- 18. Esegui script rubino in modalità elevata
- 19. salvataggio da ActiveRecord :: RecordNotFound in Rails
- 20. Convertire MySQL Query a Rails ActiveRecord query senza utilizzare find_by_sql
- 21. Compilare script in rubino in exe?
- 22. Rendering di uno sfondo utilizzando bigvideo.js in un'applicazione Rails
- 23. Quale struttura di ORM rubino utilizzare in un'app rubino autonoma?
- 24. Rails 5: ActiveRecord OR query
- 25. Rails has_many ActiveRecord Association personalizzato
- 26. Inserimento o incremento atomico in ActiveRecord/Rails
- 27. UNIONE SQL con Rails ActiveRecord
- 28. Rubino in grado di utilizzare richiedere
- 29. Come utilizzare uno script per interrogare il database SQL sqlite
- 30. rails ActiveRecord :: Observer nel plugin
metodo non definito 'require_gem' - vuol dire gioiello "ActiveRecord"? –
La chiamata require_gem è obsoleta. Dovrebbe essere necessario "activerecord" ora. – kafuchau
@kchau: Oh, grazie. Non l'ho usato da parecchio tempo. – Pesto