Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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,未找到可执行文件_Ruby_Gem - Fatal编程技术网

Ruby 正在生成gem,未找到可执行文件

Ruby 正在生成gem,未找到可执行文件,ruby,gem,Ruby,Gem,我正在写我的第一个RubyGem,我对设置gems的整个结构有点陌生。我从阅读中了解到,为了为我的gem创建可执行文件,我需要执行以下操作: 在my gemspec中添加一行,指定可执行文件的名称,如下所示: s.executables您的gempec正在尝试更改加载路径。我建议首先解决这个问题,因为您报告的内容似乎与无法找到其文件的gem一致 请查看您的gempec以了解以下代码: lib = File.expand_path('../lib', __FILE__) $LOAD_PATH.un

我正在写我的第一个RubyGem,我对设置gems的整个结构有点陌生。我从阅读中了解到,为了为我的gem创建可执行文件,我需要执行以下操作:

  • 在my gemspec中添加一行,指定可执行文件的名称,如下所示:


    s.executables您的gempec正在尝试更改加载路径。我建议首先解决这个问题,因为您报告的内容似乎与无法找到其文件的gem一致

    请查看您的gempec以了解以下代码:

    lib = File.expand_path('../lib', __FILE__)
    $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
    
    那就看

    “Gems不应更改$LOAD_PATH变量。RubyGems会为您管理此变量。这样的代码应该是不必要的…”


    有关使用现有加载路径加载的各种解决方案,请参阅,以及诸如
    require\u relative

    等帮助程序。您需要在
    spec.files
    中添加gem中需要包含的所有文件。您没有添加
    bin
    目录中的文件

    例如,我有以下来自的配置:


    此外,您需要确保您的可执行文件是可执行的

    $ chmod a+x bin/gemname
    

    否则,在构建gem之后,命令将不可用。

    因此,问题在哪里?对我来说似乎可以正常工作(我收到一个加载错误,我认为您需要将
    commander
    添加到依赖项中)。您会遇到什么错误?是否是shell中某种形式的“未找到命令”?如果是这样,您可能需要确保正确设置了Rubygems,以便gem可执行文件位于您的路径上。其他gem可以工作吗?@maxd啊抱歉,问题是最后一位
    gemname foo参数
    不工作,因为它说没有该名称的可执行文件。我将编辑这个问题。@matt我编辑了这篇文章,以包含我得到的错误。我还注意到我收到了这样一条消息:
    rbenv:cannot rehash:/home/stephen/.rbenv/shimmes/.rbenv shim已成功安装get_freaky-0.1.2.pre
    Gem::Specification.new do |spec|
      spec.files         = Dir["{bin,lib}/**/*", "LICENSE", "README.md"]
      spec.test_files    = Dir["spec/**/*"]
      spec.require_paths = ["lib"]
      spec.executables   = ["yarr"]
    end
    
    $ chmod a+x bin/gemname