2016-07-20 8 views
0

私は、指定された検索クエリを使って外部APIから結果を取得する簡単なコマンドラインRubyアプリケーションを開発するように求められました。私はこれを行うためのスクリプトを作成し、#!/usr/bin/env rubyを使用して実行可能にしました。私のスクリプト名はsampleapp.rbです。だから私はコンソールからそれを実行することができます単純なコマンドラインRubyアプリケーション

$> ./sampleapp some_argument 

それは私がファイルディレクトリの中にいるときだけです。例では

私に与えられ、スクリプト/アプリは、次のように実行するようになっていた。

$> sampleapp some_argument 

私は多くの研究を行ったが、これを達成するための方法を見つけることができませんでした。ここで私を案内してください。

また、このサンプルアプリケーションをどのようにグローバルにして、どこからでも呼び出すことができます。

更新:

sampleapp.rb

require 'net/https' 
require 'openssl' 
require 'json' 
require 'uri' 
require 'cgi' 

module Someapp 

    class SampleApp 

    def search(query ="") 
    ...some code here ... 
    end 

    if ARGV.size == 0 || ARGV[0].strip == "" 
    puts "Please provide search query as an argument" 
    else 
    query = ARGV[0].strip 
    SampleApp.new.search(query) 
    end 
end 
+1

いくつかの* nixの亜種を仮定すると、実行可能( '' '' chmod + x sampleapp''')にする必要があり、あなたの(またはより一般的には呼び出し側の) '' $ PATH'''。既に与えられた答えが示唆しているように、これを行う方法の1つは '' '/ usr/local/bin''に​​入れることです。 –

+0

@DerrellDurrettルビクラスパスがどのように動作するのか分かりません。 – mudasobwa

+0

これには、['thor'](https://github.com/erikhuda/thor)や[' slop'](https://github.com/leejarvis/slop)を見るための素晴らしい図書館がありますスコープのクリープによって「シンプル」がすべて「コンプレックス」に突然変更された場合、このタスクははるかに簡単になり、よりフレンドリーになります。 – engineersmnky

答えて

1

このスクリプトは、任意のサードパーティのライブラリに依存して(そうあるもの)とシステムrubyでスムーズに実行されない場合は、最も簡単な方法は次のようになりそれは他のLに依存している場合

sudo cp ./sampleapp /usr/local/bin/ 

/usr/local/binフォルダにコピーしますライブラリを使用する場合は、宝石を構築し、システムrubyでインストールすることをお勧めします。 gemthe canonical one is likely thisの作成方法に関するチュートリアルが多数あります。

+0

私も宝石を作りましたが、コンソールアプリケーションとしてどのように実行するのかはわかりません。依存関係で質問を更新しています。 –

+1

実行可能ファイルの作成方法と、リンクされた記事(「実行可能ファイルの追加」セクション)に宝石を同梱してください。 – mudasobwa

+0

質問が残っています。質問に記載されているように、別のマシンで動作するように、どのように出荷すればよいですか? –