속편: ActiveRecord의 대안
12650 단어 codenewbietutorialwomenintechruby
속편은 무엇입니까?
Sequel은 "간단하고 유연하며 강력한 SQL 데이터베이스 액세스 키트"를 제공하는 Ruby gem입니다.널리 사용되는 Active Record gem에 필적할 수 있다는 얘기다.Sequel에서는 ActiveRecord처럼 마이그레이션, 쿼리 및 데이터베이스를 실행할 수 있습니다.
Sequel이 지원하는 데이터베이스 유형
현재 ADO, Amalgalite, IBM DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostresQL, SQLAnywhere, SQLite3와 TinyTDS를 지원합니다.
설치 갱신
Sequel을 사용하려면 먼저 프로젝트에gem을 설치해야 합니다.이렇게 하려면 GEM 파일로 이동하여
gem ‘sequel’
을 추가합니다.터미널에서 $ bundle install
을 실행해서gem를 설치해야 합니다.application.rb
파일에서는 ActiveRecord와 같이 require ‘sequel’
을 사용해야 합니다.데이터베이스 만들기
나는 Sequel이 독특한 점을 발견했다. (물론, 나는 이 문제를 해결하기 위해 오류를 만났다.) 그것은 바로 Sequel에 연결을 시도하기 전에 데이터베이스를 만들어야 한다는 것이다.
데이터베이스를 만들려면 다음 명령(사용자 데이터베이스 이름 사용)-
$ createdb pets_development
을 실행하십시오.참고: 이 자습서에서는 PostgresSQL을 사용합니다.SQLite3에 비해 데이터베이스 생성이 독특하기 때문에 이 점을 기억하세요. 만약에 서로 다른 유형의 데이터베이스를 사용한다면 visit this page을 기억하세요.
마이그레이션 파일 만들기
마이그레이션 파일을 만드는 것은 레이아웃의 Active Record와 매우 비슷하지만
rake db:create
처럼 실행할 수 있는 간단한 명령은 없습니다.마이그레이션 파일을 수동으로 만들었지만, Sequel이 필요로 하기 때문에 파일 이름의 첫머리에 시간 스탬프를 추가해야 합니다.# 20190514_dogs.rb
Sequel.migration do
change do
create_table(:dogs) do
primary_key :id
String :name, :null => false
String :breed, :null => false
foreign_key :owner_id, :people
end
end
end
# 20190514_owners.rb
Sequel.migration do
change do
create_table(:owners) do
primary_key :id
String :name, :null => false
end
end
end
데이터베이스에 연결
이제 데이터베이스를 만들고 파일을 마이그레이션했으며 Sequel을 데이터베이스에 연결해야 합니다.이를 위해서는
application.rb
파일을 탐색하고 다음 코드를 포함해야 합니다.# application.rb
# establishes Sequel connection to db
DB = Sequel.connect(adapter: :postgres, database: ‘pets_development', host: 'localhost')
주의: 데이터베이스에 연결하는 데는 여러 가지 방식이 있는데 이것이 바로 내가 좋아하는 방식이다.이 article에는 추가 옵션이 포함되어 있습니다.또 다른 주의사항: 모델을 만든 후 데이터베이스에 연결할 수 없기 때문에 모델을 만들기 전에 이 연결 절차를 완성해야 합니다(제가 어려운 방식으로 이 점을 알았습니다).
모델 생성하기
Sequel의 모델 설정은 ActiveRecord와 매우 비슷합니다.
# dog.rb
class Dog < Sequel::Model
many_to_one :person
def validate
super
errors.add(:name, "must be present") if name.empty?
errors.add(:breed, "must be present") if breed.empty?
end
end
# owner.rb
class Owner < Sequel::Model
one_to_many :dogs
def validate
super
errors.add(:name, "must be present") if name.empty?
end
end
마이그레이션 실행
이제 데이터베이스 설정의 마지막 단계로 들어가서 이전을 실행합시다.불행하게도, 우리의 이전을 실행하는 것은Active Record를 사용하여
$ rake db:migrate
을 입력하는 것처럼 쉽지 않다.다행히도, 우리는 여전히 이 임무를 완수하기 위한 명령을 가지고 있다.$ sequel -m db/migrate/ postgres://localhost/pets_development
을 실행합니다.주의: "db/migrate/"은 마이그레이션 파일의 경로입니다. 자신의 경로로 바꾸십시오.
데이터베이스에 피드 설정
나는 이 프로젝트를 위해 피드 파일을 만들었기 때문에 어떻게 설정하는지 설명할 것이다.우리가 해야 할 첫 번째 일은 유용한gem,
Sequel-Seed
을 설치하는 것이다.GEM 파일로 이동하여 require ‘sequel-seed’
을 추가하고 $ bundle install
을 실행합니다.다음에 피드 파일을 만들어야 합니다.피드 파일은 이름의 첫머리에 시간 스탬프가 필요합니다.
# 20190514_dogs_seed.rb
Sequel.seed do
def run
[
[‘buddy’, ‘labrador’, 1],
[‘spot’, ‘golden retriever’, 1],
[‘princess’, ‘beagle’, 2]
].each do |name, breed, owner_id|
Dog.create name: name, breed: breed, owner_id: owner_id
end
end
end
# 20190514_owners_seed.rb
Sequel.seed do
def run
[
[‘angie’],
[‘bill’],
].each do |name|
Dog.create name: name
end
end
end
application.rb
파일로 이동하여 다음 코드를 삽입하여 피드 확장자와 데이터베이스 피드를 로드합니다.# application.rb
require ‘sequel/extensions/seed’
# loads the extension
Sequel.extension :seed
# seeds the database
Sequel::Seeder.apply(DB, “db/seeds/“)
묻다
Sequel의 질의는 ActiveRecord의 질의와 약간 비슷합니다.
Dog.all
을 사용하면 데이터베이스에 있는 모든 개를 되돌려줍니다..first
과 .last
을 사용하여 데이터베이스에 있는 대상의 첫 번째 사례와 마지막 실례를 얻을 수 있다..order
은 데이터베이스에서 실례를 정렬할 수 있도록 합니다.데이터베이스에서 주어진 대상 키와 일치하는 모든 실례를 찾을 수 있습니다.자세한 내용은 here을 참조하십시오.원본 SQL 쿼리
Sequel은 데이터베이스에 대한 원시 SQL 조회를 할 수 있는 매우 교묘한 점이 있다.그래서 너는 이렇게 할 수 있다.
DB['select * from owners'].each do |row|
p row
end
마지막 생각
나는 원시 SQL 기능을 사용하는 것을 매우 좋아한다.나는 SQL 조회를 정말 좋아한다. 나는 항상 이 기회를 이용하여 나의 SQL 기술을 연습한다.속편의 이 방면은 정말로 나의 그것에 대한 견해를 바꾸었다.그것은 Active Record와 다를 것이 없지만, 나는 그래도 Active Record를 사용하는 것을 더 좋아한다.내 이유는
.where()
명령 때문이야.그것들은 생활을 훨씬 수월하게 만들었다.하지만, 나는 확실히 Sequel이 Active Record를 대체할 수 있는 좋은 도구라고 생각한다.나는 이 게시물이 이미 너의 호기심을 불러일으켰고, 아마도 네가 속편을 시도하는 흥미를 불러일으켰으면 한다.
즐거운 코딩!
출처
Sequel: The Database Toolkit for Ruby
Getting Started with Sequel
Reference
이 문제에 관하여(속편: ActiveRecord의 대안), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/torianne02/sequel-an-alternative-to-activerecord-5d6l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)