我正在开发一个带有二进制文件的 ruby gem。
我正在尝试开发二进制文件,但我担心它找不到我的需求,因为 gem 没有安装为 gem 有没有办法测试二进制文件而不将其打包为 gem?
#!/usr/bin/env ruby
require "middleman_ember_scaffold/load_paths"
# Start the CLI
MiddlemanEmberScaffold::Cli::Base.start
位于一个名为 mse 的文件中,我将我的 gem 的 bin 文件夹添加到路径中
.
└── middleman_ember_scaffold
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
│ └── mes
├── lib
│ ├── middleman_ember_scaffold
│ │ ├── cli.rb
│ │ ├── load_paths.rb
│ │ └── version.rb
│ └── middleman_ember_scaffold.rb
└── middleman_ember_scaffold.gemspec
4 directories, 10 files
当我跑我得到
/Users/justin/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- middleman_ember_scaffold/load_paths (LoadError)
from /Users/justin/.rvm/rubies/ruby-1.9.3-p362/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/justin/middleman-generator/middleman_ember_scaffold/bin/mes:7:in `<main>'
我希望能够在每次进行更改时无需重新打包即可运行和开发我。
最佳答案
使用 RUBYLIB 环境变量
您面临的问题是您的源目录没有将一些魔法应用于已安装的 gem,因此 $LOAD_PATH 中没有您的 lib 目录。虽然还有其他方法可以解决这个问题,但为了进行测试,我建议只将您的 lib 目录添加到 RUBYLIB 环境变量中。例如:
RUBYLIB="/path/to/middleman_ember_scaffold/lib:$RUBYLIB"
export RUBYLIB
bin/mes
应该适用于任何 Bourne 兼容的 shell。如果您正在运行 Bash,并且在 RUBYLIB 中没有存储任何其他内容,您甚至可以将调用缩短为:
RUBYLIB="/path/to/middleman_ember_scaffold/lib" bin/mes
无论哪种方式,一旦 Ruby 知道应该将哪些目录添加到 $LOAD_PATH 中,一切都应该可以正常工作。
关于ruby - 测试 ruby gem 二进制文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16327906/