J'ai un petit script ruby dans lequel j'aimerais utiliser ActiveRecord pour accéder facilement à un modèle de base de données. Quelle est la meilleure façon de le faire?Comment utiliser ActiveRecord dans un script ruby en dehors de Rails?
53
A
Répondre
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
Il convient de noter que vous devez exiger comme les versions ultérieures de activerecord (v3 +) afin
require "active_record"
7
Vous pouvez créer un script minimal avec une base de données SQLite en mémoire en seulement quelques lignes. Cette réponse est également available as a Gist.
Inspiré par Jon Leighton's blog post sur comment publier un rapport de bogue d'ActiveRecord impressionnant.
# 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.
Questions connexes
- 1. Exécution d'un script Ruby en dehors de mon application rails?
- 2. Ruby Rails _without_ ActiveRecord
- 3. Rails: Comment utiliser une variable javascript en dehors de <script.../> mais dans la vue?
- 4. Ruby on Rails ActiveRecord: pluralization
- 5. Comment utiliser un modèle sans contrôleur dans Ruby on Rails?
- 6. ActiveRecord peut-il créer des tables en dehors d'une migration?
- 7. Ruby on Rails: comment attraper ActiveRecord :: Rollback?
- 8. Ruby on Rails ActiveRecord Validation
- 9. Ruby on Rails/Activerecord modélisation mySQL
- 10. cattr_accessor en dehors des rails
- 11. Ruby on Rails, ActiveRecord, Recherche binaire
- 12. Comment utiliser Rails I18n.t pour traduire un attribut ActiveRecord?
- 13. comment exiger un enregistrement actif en dehors des rails
- 14. Ruby on Rails: Comment utiliser un redirect_to dans un link_to?
- 15. Comment utiliser https dans Ruby on Rails
- 16. Comment utiliser hidden_field dans un form_for dans Ruby on Rails?
- 17. Webrat Mécaniser en dehors des rails
- 18. Comment utiliser && in dans Ruby on Rails?
- 19. Ruby on Rails et Ubuntu: en tapant simplement "script/generate ..." au lieu de "script ruby / generate"
- 20. (Rails, ActiveRecord) Comment utiliser les calculs ActiveRecord tout en récupérant les noms de champs?
- 21. Exécuter un script avec Ruby on Rails?
- 22. Rails: Comment utiliser select dans formtastic avec activeRecord
- 23. comment utiliser ajax avec json dans ruby sur rails
- 24. Utiliser CSS dans un plugin dans Ruby on Rails
- 25. Autoriser un script défini par l'utilisateur dans l'application Ruby/Rails
- 26. Ajouter des enregistrements à partir du script ruby externe
- 27. Besoin d'aide dans Timezone in Rails ActiveRecord
- 28. Supprimer ActiveRecord dans Rails 3
- 29. Rails ActiveRecord :: MultiparameterAssignmentErrors
- 30. Ruby on Rails 2.3.5: update_all échoue sur ActiveRecord
méthode non définie require_gem » - vous dire bijou "activerecord"? –
L'appel require_gem est obsolète. Il devrait être exiger "activerecord" maintenant. – kafuchau
@kchau: Oh, merci. Je ne l'ai pas utilisé depuis longtemps. – Pesto