현재 데이터베이스가 필요없는 소규모 웹 사이트 프로젝트에 Ruby on Rails를 사용하는 것이 편리합니다. MySQL에서 빈 데이터베이스를 만들고 거기에서 갈 수 있다는 것을 알고 있지만 데이터베이스없이 Rails를 실행하는 더 좋은 방법을 아는 사람이 있습니까?
감사
답변
environment.rb
파일 에서 다음 줄의 주석 처리를 제거 하십시오.
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
답변
들어 레일 3 및 레일 4 :
데이터베이스없이 애플리케이션을 생성 하려면
-O
(대문자 ‘O’) 또는--skip-activerecord
옵션을 사용하십시오 .
rails new myApp -O
또는
rails new myApp --skip-activerecord
들어 레일 5 :
--skip-active-record
옵션을 사용 하여 데이터베이스없이 애플리케이션 생성
이전 Rails 버전과 달리 추가 하이픈 ‘-‘를 확인하세요 .
rails new myApp --skip-active-record
답변
기존 Rails 4/5/6 프로젝트의 경우 config/application.rb
파일에 다음 행이 있습니다.
require 'rails/all' # or `require "rails"' in newer versions
(해당 행 이이 파일을 로드하고 있음을 참조 )
따라서 모두로드하는 대신 다음과 같이 각 라이브러리를 개별적으로로드해야합니다.
# active_record is what we're not going to use it, so comment it "just in case"
# require "active_record/railtie"
# This is not loaded in rails/all but inside active_record so add it if
# you want your models work as expected
require "active_model/railtie"
# And now the rest
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "active_job/railtie" # Only for Rails >= 4.2
require "action_cable/engine" # Only for Rails >= 5.0
require "sprockets/railtie"
require "rails/test_unit/railtie"
# All these depend on active_record, so they should be excluded also
# require "action_text/engine" # Only for Rails >= 6.0
# require "action_mailbox/engine" # Only for Rails >= 6.0
# require "active_storage/engine" # Only for Rails >= 5.2
Rails 버전과 관련하여 무엇을로드해야하는지 알기 위해 주석을 주시하십시오.
또한 다음 파일 (있는 경우)을 확인하고 다음 행을 주석 처리하십시오.
# package.json
"@rails/activestorage": "^6.0.0",
# app/javascript/packs/application.js
require("@rails/activestorage").start()
# bin/setup
system! 'bin/rails db:prepare'
# config/environments/development.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true
# config/environments/test.rb
config.active_storage.service = :test # For Rails >= 5.2
# config/environments/production.rb
config.active_storage.service = :local # For Rails >= 5.2
config.active_record.dump_schema_after_migration = false
# spec/rails_helper.rb
ActiveRecord::Migration.maintain_test_schema!
# test/test_helper.rb
fixtures :all # In case you're using fixtures
# Only for Rails >= 5.0
#config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true
또한 ActiveRecord::Base
모델 파일에서 참조를 제거 하십시오 (또는 적용되는 경우 파일을 삭제하십시오). 예를 들어, 자동 생성 된 app/models/application_record.rb
파일입니다.
답변
새로운 프로젝트를 시작할 때 Rails 4에서 -O 또는 –skip-active-record를 사용할 수 있습니다.
rails new my_project -O
rails new my_project --skip-active-record
이미 프로젝트를 생성했다면 댓글을 달아야합니다.
require "active_record/railtie"
config / application.rb 및
config.active_record.migration_error = :page_load
config / environments / development.rb에서
답변
데이터베이스가 필요하지 않다면 Rails를 많이 사용할 필요가 없을 것입니다. 더 작은 크기의 사용자 정의 가능한 프레임 워크를 사용할 수 있습니다.
Sinatra 는 기본 정적 페이지를 제공하는 데 적합한 작은 프레임 워크입니다.
답변
Rails 6 rc1 및 activerecord-nulldb-adapter
gem을 지원 하려면 원숭이 패치가 필요합니다.
에서 설정 / 초기화 / null_db_adapter_monkey_patches.rb
module ActiveRecord
module ConnectionAdapters
class NullDBAdapter < ActiveRecord::ConnectionAdapters::AbstractAdapter
def new_table_definition(table_name = nil, is_temporary = nil)
TableDefinition.new(table_name, is_temporary)
end
end
end
end