새로운 rails 응용 프로그램을 만들고 Ruby 스크립트에서 모든 것을 해당 응용 프로그램에 대한 rails 서버를 시작하고 싶습니다.
내 코드는 다음과 같습니다.
#!/usr/bin/env ruby
system "rails new my_app"
system "cd my_app"
system "rails server &"
그러나 “rails server &”를 실행할 때 경로는 my_app 폴더가 아니라 상위 폴더에 있습니다.
새 애플리케이션에 대해 “rails server”, “rake about”및 “rake db : migrate”를 실행할 수 있도록 스크립트 내부의 디렉토리를 변경하는 방법이 있습니까?
팁에 대한 모든 작업을 주시면 감사하겠습니다.
답변
답변
그들의 말을 듣지 마십시오 Dir.chdir("dir")
. 아마도 잘못된 일을 할 것입니다. 거의 항상 원하는 것은 다음과 같이 나머지 프로그램에 영향을주지 않고 특정 컨텍스트에 대한 변경을 제한하는 것입니다.
#!/usr/bin/env ruby
system "rails new my_app"
Dir.chdir("my_app") do
system "rails server &"
end
# back where we were, even with exception or whatever
답변
시스템은 작업 디렉토리를 지정할 수있는 : chdir 인수를 지원합니다.
system("echo Test; pwd", chdir: '/tmp')
‘/ tmp’출력
답변
Dir.chdir
스크립트의 작업 디렉토리를 변경하는 데 사용 합니다.
답변
사용 Dir.chdir ( “[aString]”)
답변
왜 다음과 같이 할 수 없습니까?
#!/usr/bin/env ruby
system 'rails new myapp && cd myapp && rails server &'
답변
다음 행은 동일한 출력을 갖습니다.
puts Dir.chdir("/tmp") { IO.popen("ls -la") { |io| io.read } }
puts IO.popen(["ls", "-la", "/tmp"]).read
puts IO.popen("ls -la /tmp").read
# drwxrwxrwt 25 root root 16384 июля 23 01:17 .
# drwxr-xr-x 22 root root 4096 июля 22 13:36 ..
# drwxrwxr-x 12 itsnikolay itsnikolay 4096 июля 19 17:14 app_template
# drwx------ 2 itsnikolay itsnikolay 4096 июля 21 15:04 .com.google.Chrome.dThb8f
# drwx------ 2 itsnikolay itsnikolay 4096 июля 18 20:55 .com.google.Chrome.FGDBGc
또한 레일을 실행하고 애플리케이션을 만들 수 있습니다 (이는 rspec 테스트 등에 유용 할 수 있습니다).
IO.popen("cd /tmp/ && rails new test_app").read
레일스 서버를 실행할 수 있습니다.)