2012-03-15 2 views
0

다운로드 할 수있는 앱에서 작업 중이며 사용자가 레이크 파일을 실행하면 원래 앱의 이름이 사용자가 제공 한 이름으로 바뀝니다. 그렇게하는 가장 좋은 방법은 무엇입니까?터미널에서 사용자 입력 데이터를 가져 오는 중 문제가 발생했습니다.

여기에 자세한 내용이 나와 있습니다. 앱은 여기에 있습니다 : github.com/bnd5k/framework. 기본 웹 응용 프로그램입니다 (홈페이지, 사용자 인증, 테스트 설정 포함). 나는 사용자가 "Framework"의 repo를 복제하고, 그 디렉토리에 CD를 넣고, 이름을 바꾸는 레이크 작업을 실행하도록 설정하려고합니다. 그러나 어떻게 든 사용자에게 그들이 애플 리케이션의 새로운 이름으로 원하는 것을 물어보기 위해 레이크 파일이 필요합니다. 그것이 내가 갇혀있는 곳입니다.

이 프로젝트의 최신 버전에서는보기를 통해 이름을 바꾸고 있습니다. 사용자가 localhost를 실행 한 다음 브라우저에서 기본보기는 Namer/new입니다. 그들은 거기에서 애플 리케이션의 이름을 변경하고 Namer 컨트롤러는 모든 necessay 파일의 이름을 변경합니다. 문제는 라우트 파일에서 앱 이름이 변경되는 지점에서 충돌하는 것입니다. 따라서이 시점에서 GUI 문제를 완전히 피해야하고 사용자가 터미널에서 이름 변경을 수행하도록해야합니다. 동의하지 않으면 알려주세요. 어떤 제안이라도 도움이 될 것입니다.

업데이트 : 그래서 아래의 Marc의 설명과 함께 사용자가 인수의 일부로 새 이름을 입력하도록 요구하고 있습니다. 내 코드가 작동합니다. 입력 할 때 : rake rename : changename [Funk], 아래 코드는 이름을 변경합니다. 불행히도 "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

왜 단순히 새 이름 레이크 작업의 인수하게? 사용자가 저장소를 끌어오고 레이크 작업을 수행 할만큼 정교한 경우 명령 줄 인수를 사용할 정도로 정교합니다 ... –

답변

1

당신의 레이크 작업 내에서이 시도 :

print "New name of app? " 
new_name = STDIN.gets.chomp 
관련 문제