[ruby-on-rails] 루비 스크립트 내에서 디렉토리를 변경하려면?

새로운 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.chdir "my_app"


답변

그들의 말을 듣지 마십시오 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

레일스 서버를 실행할 수 있습니다.)