我有2個項目,把我所造成拉動其他模塊,像這樣一個大模塊「公共代碼」項目:紅寶石:如何包括外模塊Rspec的測試
這裏的文件夾結構「我的常見項目」:
- 我的常見項目
- 共同
- file_utils.rb
- 休息,client.rb
- 其他Ruby文件與模塊...
- common.rb
- 的Gemfile
- 等...
- 共同
common.rb
require 'bundler'
Bundler.require
require_relative './common/file-utils.rb'
require_relative './common/rest_client.rb'
...
module Common
include FileUtils
include RestClient
# include other modules here...
file_utils.rb
module Common
module FileUtils
def open_file(file_name)
dir = File.expand_path('') << '/lib'
FileUtils.mkdir_p(dir) unless File.directory?(dir)
File.open(File.expand_path('') << "/lib/#{file_name}", 'w')
end
end
end
我也有一個RSpec項目中,我做了一個試驗:
- 我-rspec的項目
- 規範
- my_test_spec.rb
- spec_helper.rb
- LIB
- my_class.rb
- .rspec
- 的Gemfile
- 等...
- 規範
spec_helper.rb
require 'bundler'
require 'csv'
require_relative './lib/fp_relationship_api'
require_relative './../../../../../RubyProjects/mksta-common/common'
Bundler.require
RSpec.configure do |config|
...
config.include Common
...
end
my_class.rb
require "#{File.expand_path('') << '/spec_helper'}"
class MyClass
include Common
@error_file = open_file('error_file.txt')
...
end
我得到的錯誤:
undefined method `open_file' for MyClass:Class (NoMethodError)
有人能看到什麼地方出了錯?
'open_file'defined在哪裏? – BernardK
@BernardK,open_file是在公共項目中的另一個文件的類中定義的。我會更新這個問題。謝謝 –