我有一个在bin/
中有可执行文件的gem。 gemspec中使用了通配符:
s.executables = Dir["bin/*"].map &File.method(:basename)
如果我在bin/my_file
有一个运行chmod a+x
的ruby文件,那么它可以在bash的PATH中找到:
#!/usr/bin/env ruby
puts "working ruby script"
但是我在bin/my_file.coffee
:
#!/usr/bin/env coffee
console.dir "printing from coffee file"
当我在shell中运行my_file.coffee
时,它会尝试使用ruby而不是coffeescript来读取此脚本。
如何按照预期使用coffeescript运行此可执行文件?
就目前而言,我正在使用一种解决方法,即将我的咖啡代码作为字符串包装在我的ruby应用程序中,然后将其传递给coffee -e
并捕获输出。
此外,查看this RubyGems issue显示官方解释:
RubyGems并不意味着支持任意可执行文件。
行。除了在heredoc中包装代码之外还有其他选择吗?
这种限制是否有充分理由?
答案 0 :(得分:1)
我想它只是在RubyGems的规范中:
https://github.com/zzak/rubygems/commit/709c5aae7ffd9958cc2ea89dc2caf6b7e02c56b7
+ # Executables included may only be ruby scripts, not scripts for other
+ # languages or compiled binaries.
+ #