将Ruby on Rails用于一个目前不需要数据库的小型网站项目会很方便。我知道我可以在MySQL中创建一个空数据库并从那里开始,但有没有人知道在没有数据库的情况下运行Rails的更好方法?
由于
答案 0 :(得分:101)
Rails 3 和 Rails 4 :
使用
-O
(Capital'O')或--skip-activerecord
选项生成没有数据库的应用程序。
rails new myApp -O
或
rails new myApp --skip-activerecord
此答案转自here
Rails 5 :
使用
--skip-active-record
选项生成没有数据库的应用程序
注意额外的连字符' - '而不是之前的Rails版本。
rails new myApp --skip-active-record
答案 1 :(得分:54)
取消注释environment.rb
文件中的这一行:
config.frameworks -= [ :active_record, :active_resource, :action_mailer]
答案 2 :(得分:45)
对于现有的Rails 4/5/6项目,在config/application.rb
文件中,您有以下行:
require 'rails/all'
(作为参考,该行正在加载this file)
因此,不必加载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
答案 3 :(得分:22)
更新:请参阅“Rails 3 - how do I avoid database altogether?”问题,了解有关使用Rails 3执行此操作的更新。
答案 4 :(得分:14)
如果您不需要数据库,那么您可能不需要拥有大量的Rails。您可能需要一个更小的可自定义框架来使用。
Sinatra是一个很小的框架,非常适合提供基本的静态页面。
答案 5 :(得分:14)
在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
答案 6 :(得分:0)
要支持Rails 6 rc1和activerecord-nulldb-adapter
gem,我们需要一个猴子补丁
在 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