2012-03-15 6 views
0

私はダウンロード可能なアプリケーションを作成しています。ユーザーがRAKEファイルを実行すると、元のアプリケーションの名前がユーザーの名前に変更されます。それを行う最善の方法は何ですか?端末からユーザー入力データを引き出すときに問題が発生する

ここに詳細があります。アプリはここにあります:github.com/bnd5k/framework。基本的なWebアプリケーション(ホームページ、ユーザー認証、テスト設定があります)です。私は、ユーザーが "Framework"のレポをクローンし、そのディレクトリにcdし、名前を変更するレーキタスクを実行するように設定したいと思います。しかし、どういうわけか私は自分のアプリの新しい名前として何を求めているのかをユーザに尋ねるためにレーキファイルが必要です。それは私がつかまえたところです

このプロジェクトの現在のバージョンでは、この名前を変更しています。ユーザーはlocalhostを実行し、ブラウザでデフォルトビューはNamer/newです。彼らはそこにアプリの名前を変更し、Namerコントローラはすべての必要なファイルの名前を変更します。問題は、ルートファイルでアプリ名が変更された時点でクラッシュすることです。ですから、この時点では、GUIの問題を完全に回避して、ユーザーが端末で名前を変更するようにしなければならないと考えています。もしあなたが同意しないなら、私に知らせてください。どんな提案も役に立ちます。

更新:私は以下のMarcのコメントにつきまして、ユーザーが引数の一部として新しい名前を入力するよう要求しています。私のコードはうまくいきます。私はこれをタイプします:rake rename:changename [Funk]、以下のコードは名前を変更します。残念ながら、それは "ファンク"の代わりに "new_name"に名前を変更します。私が間違っていることについてのアイデアは?

namespace :rename do 
    desc 'changes the name of the app' 
    task :changename, :new_name do 
    file_names = ['config/environments/test.rb', 'config/environments/production.rb', 
     'config/environment.rb'] 
    file_names.each do |file_name| 
     text = File.read(file_name) 
     File.open(file_name, "w") { |file| file << text.gsub("Framework", :new_name.to_s) } 
    end 
    end 
end 
+0

をなぜ単に新しい名前にrakeタスクの引数を作ってみませんか?あなたのユーザがあなたのリポジトリをプルするのに十分な洗練されたもので、レーキタスクを実行するならば、コマンドライン引数を使用するのに十分な洗練されたものです... –

答えて

1

あなたのrakeタスク内でこれを試してみてください:

print "New name of app? " 
new_name = STDIN.gets.chomp 
関連する問題