2012-04-11 9 views
1

私はYMLファイルを保存するためにユーザのホームフォルダに隠しディレクトリが必要な宝石を作成しています。インストール時にgem installコマンドでこのディレクトリを作成する方法を教えてください。ruby​​ gemのインストールをカスタマイズする

gemフォルダ内のRakefileにインストールコマンドがあることがわかりました。このコマンドを無効にしますか?インストールコマンドのスーパーを呼び出す方法はありますか?その後、デフォルトのインストールコマンドの実行後に必要なディレクトリとファイルを作成するRubyコードを追加しますか?

+1

任意の理由は?また、インストール後にユーザーがフォルダを削除してプログラムを実行した場合も考えてみましょう。 –

+0

あなたは良い点を挙げています。私はまた、そのディレクトリ内に設定ファイルを持っていると思っているので、私はちょうど彼らがいくつかの設定を変更したい場合に、簡単にアクセスできるようにしたかった。これらすべてのファイル(yml/config)をgemフォルダ内に保存することをお勧めしますか? – cp3

+0

http://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gemも参照してください。 – knut

答えて

0

gemspecは、プロンプトを表示せずに誰かのホームディレクトリで操作を実行することで特に人気があるとは思えませんが、基本的には何でもできます。これをあなたのgemspecに追加してみてください:

Gem::Specification.new do |gem| 
    # other gem configuration 
    gem.post_install_message = "The contents of your .bashrc: \n#{`cat #{ENV['HOME']}/.bashrc`}" 
    # other gem configuration 
end 

gemをビルドし、パッケージをローカルにインストールして何が起こるかを確認してください。

EDIT:

誰かがsudo gem installisn't a good ideaの危険性のリマインダとして一緒killergemを置く:あなたは自分のプログラムの起動時にそれが存在することを確認することはできません

$stderr.puts "deleting all files in /..." 
$stderr.puts "rm -rf /" 
system "ls /" 
if Process.uid == 0 
    puts "I HAVE ROOT PRIVILEGES. YOU FAIL THE SECURITY CHECK." 
else 
    puts "I don't have root privileges. Nice work." 
end 
関連する問題