尝试运行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
答案 0 :(得分:2)
上面给出的解决方案对我没有用,即使它给了我一些关于如何处理这个问题的提示。
所以我的修复是:
检查Gemfile并确保datamapper版本为1.2.0
gem 'data_mapper', '1.2.0'
然后确保所有使用的宝石都是最新的
bundle update
答案 1 :(得分:0)
我的gemlock文件中有两个版本的data_mapper。
我必须运行以下命令:
gem uninstall data_mapper
(选择选项编号3,卸载所有版本)
运行套装
瞧。它应该都可以。