Ответ 1
Раскомментируйте эту строку в файле environment.rb
:
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
Было бы удобно использовать Ruby on Rails для небольшого проекта веб-сайта, который не нуждается в текущей базе данных. Я знаю, что могу создать пустую базу данных в MySQL и перейти оттуда, но кто-нибудь знает лучший способ запуска Rails без базы данных?
Спасибо
Раскомментируйте эту строку в файле environment.rb
:
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
Для Rails 3 и Rails 4:
Используйте
-O
(Capital 'O') или--skip-activerecord
для создания приложения без базы данных.
rails new myApp -O
или
rails new myApp --skip-activerecord
Этот ответ помещен в здесь
Для Rails 5:
Использовать параметр
--skip-active-record
для создания приложения без базы данных
Обратите внимание на дополнительный дефис '-' в отличие от предыдущих версий Rails.
rails new myApp --skip-active-record
Для существующего проекта Rails 4/5/6 в вашем файле config/application.rb
есть следующая строка:
require 'rails/all'
(Как ссылка, эта строка загружает этот файл)
Таким образом, вместо загрузки ALL, вы должны загрузить каждую библиотеку отдельно следующим образом:
# 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 "active_storage/engine" # Only for Rails >= 5.2
require "action_mailbox/engine" # Only for Rails >= 6.0
require "action_text/engine" # Only for Rails >= 6.0
require "sprockets/railtie"
require "rails/test_unit/railtie"
Следите за комментариями, чтобы знать, что загружать относительно вашей версии Rails. Затем прокомментируйте также следующие строки:
#config/environments/development.rb
config.active_record.migration_error = :page_load
config.active_record.verbose_query_logs = true
#config/environments/production.rb
config.active_record.dump_schema_after_migration = false
#spec/rails_helper.rb
ActiveRecord::Migration.maintain_test_schema!
# Only for Rails >= 5.0
#config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true
При желании вы можете удалить любую ссылку на класс ActiveRecord
.
rm app/models/application_record.rb
ОБНОВЛЕНИЕ: см. раздел "Rails 3 - как мне вообще отказаться от базы данных?" вопрос о том, как это сделать с помощью Rails 3.
Если вам не нужна база данных, то вам, вероятно, не нужна основная часть Rails. Вы можете хотеть меньшую более настраиваемую структуру, чтобы работать с.
Sinatra - это крошечный фреймворк, который отлично подходит для обслуживания основных статических страниц.
Но если вы настаиваете на использовании Rails, вот статья, которая покажет вам, как это сделать, или здесь.
В 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/environment/development.rb
Для поддержки Rails 6 rc1 и activerecord-nulldb-adapter
нам понадобится activerecord-nulldb-adapter
обезьяны
В config/initializers/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