【问题标题】:rake db:migrate with rails '~> 5.1.4', sqlite3 and sequel-rails gives NameError: uninitialized constantrake db:migrate with rails '~> 5.1.4', sqlite3 和 sequel-rails 给出 NameError: uninitialized constant
【发布时间】:2018-02-14 12:37:23
【问题描述】:

我正在使用以下 gem 开发一个简单的应用程序:

gem 'rails', '~> 5.1.4'
gem 'sqlite3'
gem 'sequel-rails'

当我尝试创建任何迁移时,遵循instructions,我得到“rake aborted! NameError: uninitialized constant" 错误。例如,如果我正在运行: rails generate migration create_users,输出错误为:

rake aborted!
NameError: uninitialized constant CreateUsers

任何模型生成都会发生同样的情况。 我的application.rb 文件内容如下:

  require_relative 'boot'

  require "rails"
  require "action_controller/railtie"
  require "action_mailer/railtie"
  require "sprockets/railtie"
  require "rails/test_unit/railtie"
  # Pick the frameworks you want:
  require "active_model/railtie"
  require "active_job/railtie"
  # require "active_record/railtie"
  require "action_controller/railtie"
  require "action_mailer/railtie"
  require "action_view/railtie"
  require "action_cable/engine"
  require "sprockets/railtie"
  require "rails/test_unit/railtie"
  require 'rails/all'

  # Require the gems listed in Gemfile, including any gems
  # you've limited to :test, :development, or :production.
  Bundler.require(*Rails.groups)

  module MyApp
    class Application < Rails::Application
      # Initialize configuration defaults for originally generated Rails version.
      config.load_defaults 5.1
      # Allowed options: :sql, :ruby.
      config.sequel.schema_format = :sql
      # Whether to dump the schema after successful migrations.
      # Defaults to false in production and test, true otherwise.
      config.sequel.schema_dump = true
      config.sequel.load_database_tasks = true
      config.sequel.load_database_tasks = :sequel
      config.sequel.logger = Logger.new($stdout)
      # config.sequel.after_connect = proc do
      #   Sequel::Model.plugin :timestamps, update_on_create: true
      # end
      # Settings in config/environments/* take precedence over those specified here.
      # Application configuration should go into files in config/initializers
      # -- all .rb files in that directory are automatically loaded.
    end
  end

database.yml 有:

development:
  adapter: sqlite3 # Also accept sqlite3
  database: db/mydatabase.sqlite # Path to db relative to Rails root

而我的迁移20180214121521_create_users.rbcontent 是:

Sequel.migration do
  change do
    create_table :users do
      primary_key :id
    end
  end
end

非常感谢任何帮助解决这个问题。 :)

【问题讨论】:

  • 尝试从 application.rb 中删除 require 'rails/all'。
  • 你已经有迁移文件了吗?你尝试创建新的迁移?
  • @NarasimhaReddy,删除 rails/all 抛出:“不知道如何构建任务 'db:migrate'(参见 --tasks)”
  • @Vishal,是的。问题中提到了迁移文件:“我的迁移20180214121521_create_users.rb 内容是:Sequel.migration do change do create_table :users do primary_key :id end end end”
  • @RalucaP。你有没有配置你的config/environments/development.rbconfig/initializers/new_framework_defaults.rb

标签: ruby-on-rails ruby rails-migrations sequel


【解决方案1】:

解决方案是删除:require 'rails/all'config.sequel.load_database_tasks = :sequel。我现在工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多