Ruby 使用可执行二进制文件开发gem时,无法要求lib dir中的文件
我正在开发一个名为Ruby 使用可执行二进制文件开发gem时,无法要求lib dir中的文件,ruby,gem,rubygems,Ruby,Gem,Rubygems,我正在开发一个名为I19的gem。它应该有一个CLI。所以在bin/i19和I中需要“i19”。 从文件lib/i19.rb中,我确实需要放置在lib/i19/中的文件 如果我使用bundle console一切正常,但是当我尝试执行二进制文件(我正在执行rake安装;i19 help)时,我会出现以下错误:require':无法加载这样的文件--i19/scanners/pattern\u scanner(LoadError) 以下是我的文件的外观: # bin/i19 #!/usr/bin/
I19
的gem。它应该有一个CLI。所以在bin/i19
和I中需要“i19”
。
从文件lib/i19.rb
中,我确实需要放置在lib/i19/
中的文件
如果我使用bundle console
一切正常,但是当我尝试执行二进制文件(我正在执行rake安装;i19 help
)时,我会出现以下错误:require':无法加载这样的文件--i19/scanners/pattern\u scanner(LoadError)
以下是我的文件的外观:
# bin/i19
#!/usr/bin/env ruby
require "thor"
require "i19"
module I19
class CLI < Thor
end
end
I19::CLI.start
# lib/i19.rb
require "i19/version"
require "i19/commands"
require "i19/scanners/pattern_scanner"
require "i19/scanners/pattern_with_scope_scanner"
module I19
end
# lib/scanners/pattern_scanner.rb
require 'i19/scanners/base_scanner'
module I19::Scanners
class PatternScanner < BaseScanner
# ...
end
end
#bin/i19
#!/usr/bin/env ruby
需要“雷神”
需要“i19”
模块I19
类CLI
我不明白为什么它可以从控制台工作,但不能从命令行工作
谢谢你的帮助。好的,我自己找到了答案。问题不在于ruby代码,而在于gem的编译方式 我的
gemspec
文件如下所示
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'i19/version'
Gem::Specification.new do |spec|
# ...
spec.files = `git ls-files`.split($/)
# ...
end
问题是,gitls文件
没有列出未跟踪的文件。有一次我添加了lib/i19/scanners/pattern\u scanner.rbgit,它成功了
这让我觉得手动测试CLI的工作流程可能不是最好的,即rake安装;i19更新
。有更好的办法吗