`<module:types>':#string的未定义方法`/':0x007fd44c8f5318>(NoMethodError)Datamapper

时间:2017-09-23 12:28:40

标签: ruby-on-rails ruby sinatra datamapper

尝试运行RSpec时收到此错误。我只是在我的应用程序上设置DataMapper,我收到了这个错误。我一直在尝试自己调试,但我不了解堆栈跟踪以及它在哪里引导我。

我已经安装了DataMapper gem,我在app.rb和peep.rb中需要它。我还设置了postgres服务器和数据库。

/Users/benjamin/.rvm/gems/ruby-2.4.0/gems/dm-types-0.10.0/lib/dm-types.rb:7:in `<module:Types>': undefined method `/' for #<String:0x007fd44c8f5318> (NoMethodError)
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/dm-types-0.10.0/lib/dm-types.rb:4:in `<module:DataMapper>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/dm-types-0.10.0/lib/dm-types.rb:3:in `<top (required)>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/data_mapper-0.9.2/lib/data_mapper.rb:7:in `require'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/data_mapper-0.9.2/lib/data_mapper.rb:7:in `block in <top (required)>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/data_mapper-0.9.2/lib/data_mapper.rb:5:in `each'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/data_mapper-0.9.2/lib/data_mapper.rb:5:in `<top (required)>'
    from /Users/benjamin/Desktop/Makers/WeekFour/WeekendChallenge/chitter-challenge/app/app.rb:2:in `require'
    from /Users/benjamin/Desktop/Makers/WeekFour/WeekendChallenge/chitter-challenge/app/app.rb:2:in `<top (required)>'
    from /Users/benjamin/Desktop/Makers/WeekFour/WeekendChallenge/chitter-challenge/spec/spec_helper.rb:5:in `require'
    from /Users/benjamin/Desktop/Makers/WeekFour/WeekendChallenge/chitter-challenge/spec/spec_helper.rb:5:in `<top (required)>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb:1453:in `require'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb:1453:in `block in requires='
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb:1453:in `each'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration.rb:1453:in `requires='
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration_options.rb:112:in `block in process_options_into'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration_options.rb:111:in `each'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration_options.rb:111:in `process_options_into'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/configuration_options.rb:21:in `configure'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:99:in `setup'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:86:in `run'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:71:in `run'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/lib/rspec/core/runner.rb:45:in `invoke'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.6.0/exe/rspec:4:in `<top (required)>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/bin/rspec:23:in `load'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/bin/rspec:23:in `<main>'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/benjamin/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

App.rb:

require 'sinatra/base'
require 'data_mapper'
require_relative './models/peep.rb'

class Chitter < Sinatra::Base

  get '/' do
    'You arrived at the homepage'
  end

  run! if app_file == $PROGRAM_NAME
end

Peep.rb:

require 'data_mapper'
require 'dm-postgres-adapter'


class Peep

  include DataMapper::Resource

  property :id, Serial
  property :title, String
  property :text, String

end

DataMapper.setup(:default, "postgres://localhost/chitter")
DataMapper.finalize
DataMapper.auto_upgrade!

Spec_helper.rb:

require 'simplecov'
require 'simplecov-console'
require 'capybara/rspec'
require 'capybara'
require './app/app'
require './app/models/peep.rb'

Capybara.app = Chitter

SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
  SimpleCov::Formatter::Console,
  # Want a nice code coverage website? Uncomment this next line!
  # SimpleCov::Formatter::HTMLFormatter
])
SimpleCov.start

RSpec.configure do |config|
  config.after(:suite) do
    puts
    puts "\e[33mHave you considered running rubocop? It will help you improve your code!\e[0m"
    puts "\e[33mTry it now! Just run: rubocop\e[0m"
  end
end

2 个答案:

答案 0 :(得分:2)

对于那些偶然发现这个错误的同行们来说......

上面给出的解决方案对我没有用,即使它给了我一些关于如何处理这个问题的提示。

所以我的修复是:

检查Gemfile并确保datamapper版本为1.2.0

 gem 'data_mapper', '1.2.0'

然后确保所有使用的宝石都是最新的

bundle update

答案 1 :(得分:0)

我的gemlock文件中有两个版本的data_mapper。

我必须运行以下命令:

  1. gem uninstall data_mapper

    (选择选项编号3,卸载所有版本)

  2. 运行套装

  3. 瞧。它应该都可以。