如何在没有数据库的情况下配置Ruby on Rails?

时间:2009-05-04 18:12:47

标签: ruby-on-rails

将Ruby on Rails用于一个目前不需要数据库的小型网站项目会很方便。我知道我可以在MySQL中创建一个空数据库并从那里开始,但有没有人知道在没有数据库的情况下运行Rails的更好方法?

由于

7 个答案:

答案 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是一个很小的框架,非常适合提供基本的静态页面。

但是,如果您坚持使用Rails here,则会有一篇文章向您展示如何做到这一点或here

答案 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