我正在开发一个具有二进制文件的ruby宝石.
我正在尝试开发二进制文件,但是我担心它没有找到我的要求,因为宝石没有安装作为一个宝石有没有一种方式来测试二进制,而不是将其作为宝石包装?
#!/usr/bin/env ruby require "middleman_ember_scaffold/load_paths" # Start the CLI MiddlemanEmberScaffold::Cli::Base.start
坐在一个名为mse和ive的文件中,将我的bin文件夹的gem添加到路径
. └── 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的外壳.如果您正在运行Bash,并且RUBYLIB中没有其他内容,您甚至可以将调用缩短到:
RUBYLIB="/path/to/middleman_ember_scaffold/lib" bin/mes
无论哪种方式,一旦Ruby知道应该添加到$LOAD_PATH的目录,一切都应该正常工作.