Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用可执行二进制文件开发gem时,无法要求lib dir中的文件_Ruby_Gem_Rubygems - Fatal编程技术网

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.rb
git,它成功了

这让我觉得手动测试CLI的工作流程可能不是最好的,即
rake安装;i19更新
。有更好的办法吗