2017-12-21 30 views
1

RubyでThorを使用してCLI宝石を構築しています。私はrake installを実行し、rake buildを実行してからgemをローカルにインストールするタスクを実行します。しかし、私はコマンドラインでそれを実行しようとすると、コマンドを見つけることができません。宝石はsmokestackと呼ばれていますので、理論的には私はにインストールすると端末で実行できるはずです。Ruby CLIを手動でテストする

構造:

├── CODE_OF_CONDUCT.md 
├── Gemfile 
├── Gemfile.lock 
├── LICENSE.txt 
├── README.md 
├── Rakefile 
├── bin 
│   ├── console 
│   ├── setup 
│   └── smokestack 
├── lib 
│   ├── smokestack 
│   │   ├── build.rb 
│   │   ├── cli.rb 
│   │   └── version.rb 
│   └── smokestack.rb 
├── pkg 
│   └── smokestack-0.1.0.gem 
├── smokestack.gemspec 
└── test 
    ├── build_test.rb 
    ├── smokestack_test.rb 
    └── test_helper.rb 

ビン/煙突:

#!/usr/bin/env ruby -wU 

require 'smokestack' 

Smokestack::Cli.start(ARGV) 

あなたは、私がrake installを実行したときから、ツリー内のpkgフォルダを見ることができます。

smokestack 0.1.0 built to pkg/smokestack-0.1.0.gem. 
smokestack (0.1.0) installed. 

私はその後、私のターミナルでsmokestackを実行して、エラーを取得:zsh: command not found: smokestack

私もgem install --local ~/path/to/gem/pkg/gem.gem 結果しようとしました:

Successfully installed smokestack-0.1.0 
Parsing documentation for smokestack-0.1.0 
Done installing documentation for smokestack after 0 seconds 
1 gem installed 

これをここに は、私がいることを実行したときの結果です同じ「コマンドが見つかりませんでしたエラー」になります。

質問このCLIをローカルで実行して、開発中にテストする方法を教えてください。

現在のプロジェクトと理想的にやりとりするので、bundle exec bin/smokestackを自分のディレクトリ内で実行するだけで、必要な結果が得られません。とにかくそれはシステムのCLIでなければなりません?

Here is the repo必要に応じて追加のコンテキスト。

答えて

1

これにはいくつか問題が発生しています。まず、/binから/exeの実行可能ファイルを実行したバンドル。参考までに[この記事(http://bundler.io/blog/2015/03/20/moving-bins-to-exe.html)を参照してください。

bin/smokestackexe/smokestackに移動しました。

はまた.gemspecファイルがgit ls-filesを実行することにより、宝石のファイルリストを取得する原因となり、確認し、あなたのファイルをステージングする必要があります。これですべてが完了すると、すべてが機能しているように見えます。

関連する問題