【问题标题】:No implicit conversion of nil into string devise没有将 nil 隐式转换为字符串设计
【发布时间】:2016-07-01 02:58:02
【问题描述】:

我是红宝石新手。我只是试图设置设计。我按照https://github.com/plataformatec/devise 的说明进行操作,当我到达rake db:migrate 命令时,它告诉我rake 已中止并且“没有将nil 隐式转换为String”。这很令人沮丧,因为我正在做指南/视频正在做的事情并且我得到了一个错误。

请参阅下面的错误。

User$ rake db:migrate
rake aborted!
no implicit conversion of nil into String
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:24:in `initialize'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:24:in `new'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/sqlite3_adapter.rb:24:in `sqlite3_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:79:in `retrieve_connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/connection_handling.rb:53:in `connection'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/migration.rb:863:in `initialize'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `new'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate'
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

谢谢。

【问题讨论】:

  • 我不确定,所以我不想建议这个作为答案,但似乎您还没有在config/database.yml 中创建数据库或连接信息不存在/不准确。

标签: ruby-on-rails ruby devise


【解决方案1】:

很可能是由于 config/database.yml 文件不正确。这是一个普通的:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: sqlite3
  database: db/production.sqlite3
  pool: 5
  timeout: 5000

【讨论】:

  • 不幸的是,这正是 config/database.yml 中的内容,但它仍然无法正常工作
  • 您能告诉我们您使用的是哪个版本的设备吗?
  • 刚刚尝试了一个使用 devise 3.0.0 和 rails 4 的虚拟项目,它工作正常。尝试在rake db:migrate之前添加bundle exec
  • 不是真的...您可能想尝试重新安装所有 gem...我使用 RVM,这在这里很容易stackoverflow.com/questions/4693445/…
  • 太棒了 :) 如果对您有帮助,请考虑接受答案
【解决方案2】:

我遇到了同样的问题,这是由config/initializers/devise.rb中的以下行引起的:

config.mailer_sender = 'no-reply@' + Rails.application.secrets.domain_name

Rails.application.secrets.domain_name,在secrets.yml 中定义的没有设置,这对我来说是错误的原因。

【讨论】:

    【解决方案3】:

    每次我尝试rake install-ing 宝石时,Rake 都会给我这个消息。它会成功打包gem,然后尝试运行ruby -S gem install pkg/my_gem.version.gem。它会失败。

    奇怪的是,从命令行运行命令会成功安装相同的 gem。

    看到其他人建议应该重新安装所有 gem,我尝试重新安装 rake gem。它似乎已经修复了它。 (我还重新安装了 bundler gem,但我不认为这是问题所在)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2019-03-11
      • 2023-04-09
      相关资源
      最近更新 更多