12

我正在开发一个带有二进制文件的红宝石宝石。

我正在尝试开发二进制文件,但我担心它找不到我的要求,因为 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>'

我希望能够在每次进行更改时无需重新打包即可运行和开发 mes。

4

2 回答 2

19

可能一种“更好”的方法是执行以下操作:

$ ruby -I./lib bin/mes

它与更改加载路径的作用相同,但仅对您正在执行的命令起作用。

于 2013-06-27T05:00:51.540 回答
3

使用 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 中,一切都会正常工作。

于 2013-05-01T23:46:39.347 回答