【问题标题】:rails can't find database.ymlrails 找不到 database.yml
【发布时间】:2011-06-21 03:49:42
【问题描述】:

我刚刚删除了我的database.yml,因为我正在尝试使用 Mongoid,现在我得到了以下信息:

$ rails server           
=> Booting WEBrick
=> Rails 3.0.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application/configuration.rb:88:in `read': No such file or directory - /home/chris-kun/code/thirsty/config/database.yml (Errno::ENOENT)
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application/configuration.rb:88:in `database_configuration'
        from /usr/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/railtie.rb:58:in `block (2 levels) in <class:Railtie>'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
        from /usr/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/railtie.rb:57:in `block in <class:Railtie>'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `instance_exec'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `run'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:50:in `block in run_initializers'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `each'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `run_initializers'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:134:in `initialize!'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
        from /home/chris-kun/code/thirsty/config/environment.rb:5:in `<top (required)>'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `block in require'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `block in load_dependency'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:596:in `new_constants_in'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:225:in `load_dependency'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require'
        from /home/chris-kun/code/thirsty/config.ru:3:in `block in <main>'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/builder.rb:46:in `instance_eval'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/builder.rb:46:in `initialize'
        from /home/chris-kun/code/thirsty/config.ru:1:in `new'
        from /home/chris-kun/code/thirsty/config.ru:1:in `<main>'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/builder.rb:35:in `eval'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/builder.rb:35:in `parse_file'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/server.rb:162:in `app'
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/server.rb:253:in `wrapped_app'
  1 #!/usr/bin/env ruby
        from /usr/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/server.rb:204:in `start'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands/server.rb:65:in `start'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:30:in `block in <top (required)>'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:27:in `tap'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/commands.rb:27:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails mongoid


    【解决方案1】:

    config/application.rb 中,删除require 'rails/all' 行并替换为:

    require "rails"
    
    %w(
      action_controller
      action_mailer
      active_resource
      rails/test_unit
    ).each do |framework|
      begin
        require "#{framework}/railtie"
      rescue LoadError
      end
    end
    

    (这是 railties gem 中 rails/all.rb 的内容,但删除了 activerecord 行)。

    【讨论】:

      【解决方案2】:

      我之前遇到过类似的问题,但事实证明我有一些分散的 active_record 引用。这要归功于 Dylan Markow!

      Removing database.yml when using Mongoid in Rails 3.2

      执行grep -r active_record config/ 查找所有引用,然后将它们注释掉!

      【讨论】:

        【解决方案3】:

        对于那些想要使用 db 相关功能 ex) rake db:seed 与 mongoid 的人,还可以添加 mongoid railtie:

        https://github.com/mongodb/mongoid/tree/master/lib/mongoid/railties

        require "rails"
        
        # Import gems in Gemfile
        Bundler.require(*Rails.groups)
        
        # important that this is imported after gems in Gemfile are imported
        %w(
          mongoid
          action_controller
          action_mailer
          active_resource
          rails/test_unit
        ).each do |framework|
        begin
          require "#{framework}/railtie"
            rescue LoadError
          end
        end
        

        【讨论】:

          【解决方案4】:

          Rails 5 和所有未来版本的 Rails 的更新答案:

          您应该使用rails/all.rb 文件中的require sn-p,该文件与您的Rails 版本一致,没有active_record railtie。 Here is a link to rails/all.rb on the Rails master branch.

          在撰写本文时,它包括许多您不想错过的新铁路:

          require "rails"
          
          %w(
            action_controller/railtie
            action_view/railtie
            action_mailer/railtie
            active_job/railtie
            action_cable/engine
            rails/test_unit/railtie
            sprockets/railtie
          ).each do |railtie|
            begin
              require railtie
            rescue LoadError
            end
          end
          

          【讨论】:

            猜你喜欢
            • 2016-06-17
            • 1970-01-01
            • 1970-01-01
            • 2023-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多