이제 Rails 3 베타가 출시되었으므로 Rails 3 베타에서 방금 작업을 시작한 앱을 다시 작성하는 방법을 살펴 보겠습니다. 두 가지 모두에 대한 느낌을 얻고 약간의 유리한 출발을 할 수 있습니다. 이 앱은 모든 모델에 MongoDB 및 MongoMapper를 사용하므로 ActiveRecord가 필요하지 않습니다. 이전 버전에서는 다음과 같은 방법으로 activerecord를 언로드합니다.
config.frameworks -= [ :active_record ] # inside environment.rb
최신 버전에서는 작동하지 않고 오류가 발생합니다.
/Library/Ruby/Gems/1.8/gems/railties-3.0.0.beta/lib/rails/configuration.rb:126:in
`frameworks': config.frameworks in no longer supported. See the generated
config/boot.rb for steps on how to limit the frameworks that will be loaded
(RuntimeError)
from *snip*
물론 boot.rb가 제안한대로 살펴 보았지만, 제가 볼 수있는 한 여기에서는 AR을 언로드하는 방법에 대한 단서가 없습니다. 내가이 작업을해야하는 이유는 내가 원하지 않는 것을로드하는 것이 어리 석을뿐만 아니라 컨트롤러 용 제너레이터를 실행하려고해도 DB 연결을 할 수 없다는 불만이 있기 때문입니다. 이것은 MongoDB 연결 세부 정보에 database.yml database.yml
을 사용 하는 데이 요지 를 사용 하기 위해 MongoDB에 대한 연결 세부 정보로 지우고 교체 했기 때문 입니다. 어쨌든 컨트롤러를 생성하기 위해 DB 연결을 시작할 수 있어야하는 이유를 모르겠습니다 ….
이 작업을 수행하는 올바른 Rails 3 방법을 알고있는 사람이 있습니까?
답변
나는 소스를 읽음으로써 이것으로 갈 것이므로 실제로 작동하는지 알려주십시오. 🙂
rails
이제 응용 프로그램 템플릿을 생성하는 명령은 옵션이 -O
는 액티브을 건너 알려줍니다.
다시 실행 rails
하고 싶지 않다면 기존 앱에서 다음 사항을 확인해야합니다.
-
당신이 있는지 확인
config/application.rb
하지 않습니다 이require 'rails/all'
나require "active_record/railtie"
. 대신 ActiveRecord가없는 표준 Rails 설정의 경우 다음 사항 만 필요합니다.require File.expand_path('../boot', __FILE__) require "action_controller/railtie" require "action_mailer/railtie" require "active_resource/railtie" require "rails/test_unit/railtie" require "sprockets/railtie" # Auto-require default libraries and those for the current Rails environment. Bundler.require :default, Rails.env
-
에, 경우
config/application.rb
, 당신이 사용하는config.generators
섹션을 확인하십시오 그것은 선이 없습니다g.orm :active_record
.nil
원하는 경우 이를 명시 적으로로 설정할 수 있지만이g.orm
완전히 생략 된 경우 기본값이어야합니다 . -
선택 사항이지만에서 데이터베이스에 대한 모듈을로드하는 줄을
Gemfile
제거gem
합니다.gem "mysql"
예를 들어 이것은 라인이 될 수 있습니다 .
답변
레일스 4
레일 4에서 비활성화하는 방법을 찾고 있었는데 레일 4에서 더 이상 작동하지 않는이 답변 만 찾았습니다. 그래서 이것은 레일 4에서 할 수있는 방법입니다 (RC1에서 테스트 됨).
새 프로젝트에서
rails new YourProject --skip-active-record
기존 프로젝트에서
- Gemfile에서 데이터베이스 드라이버 gem (예 :
gem 'sqlite3'
또는gem 'pg'
. -
config / application.rb에서 다음으로 대체하십시오
require 'rails/all'
."action_controller / railtie"필요 "action_mailer / railtie"필요 "스프로킷 / 레일 타이"필요 "rails / test_unit / railtie"필요
-
config / environments / development.rb에서 제거하거나 주석 처리하십시오.
config.active_record.migration_error = :page_load
-
잠재적으로 spec_helper에서 active_record 도우미를 제거해야합니다 (댓글의 VenoM을 통해).
-
잠재적으로 ConnectionManagement 미들웨어를 제거해야합니다 (유니콘의 경우처럼 보임) :
config.app_middleware.delete "ActiveRecord::ConnectionAdapters::ConnectionManagement"
( https://stackoverflow.com/a/18087332/764342 를 통해 )
Rails 4에서 ActiveRecord를 비활성화하는 방법을 찾는 다른 사람들에게 도움이되기를 바랍니다.
답변
새로운 Rails 앱의 경우 –skip-active-record 매개 변수를 지정하여 활성 레코드를 제외하도록 할 수 있습니다. 예 :
rails new appname --skip-active-record
답변
Rails 3.2를 사용하여 새 프로젝트를 생성 한 경우 다음과 같이 주석 처리해야합니다.
config.active_record.mass_assignment_sanitizer = :strict
과
config.active_record.auto_explain_threshold_in_seconds = 0.5
당신의 development.rb 파일.
답변
위의 모든 것이 사실입니다. Rails 3.1에서 한 가지 더해야 할 일은
config.active_record.identity_map = true
에서 config/application.rb
.
답변
rspec을 실행중인 경우 (spec_helper에서) 제거해야합니다.
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
제거
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
config.use_transactional_fixtures = true
답변
또한 의견을 밖으로
# config/application.rb
config.active_record.whitelist_attributes = true
(레일 3.2.13에 표시됨)