레일스 응용 프로그램 내에서 자산 사전 컴파일 작업을 실행하고 싶습니다. 코드를 변경할 사람이 많기 때문에 언제든지 변경할 때마다 항상 스크립트를 실행해야합니다. 나는레일 응용 프로그램 내에서 레이크 작업 실행
system("Template='#{params[:template]}' Theme='#{params[:theme]}' rake assets:precompile)
내가 UI에서 두 값을 얻고 같은 몇 가지 매개 변수를 사용하여 작업을 실행하는 UI를 구축, 그래서 그들은 혼자 스크립트를 실행할 수 있습니다에서 그들에 대한 GUI를 제공하고 그들에게 서버 액세스 권한을 부여, 그래서 (params [: template], params [: theme]) 다른 경로 (사이트 경로)에서이 작업을 실행하고 싶은 또 다른 사항은 관리자 측 UI가 해당 작업이 사이트 디렉토리에서 실행되어야 함을 의미합니다.
if(params[:theme_script] == "true")
template=Template.where(:name => params[:template]).first
if template
theme = template.themes.where(:name => params[:theme]).first
if theme
# Dir.chdir "#{THEMEPATH}"do
# `Template="#{template.name}" Theme="#{theme.name}" rake assets:precompile`
# end
# sleep 10
# system("#{Rails.root.to_s}/lib/shell_script.sh")
# RunRake.run_rake(template.name,theme.name)
# Dir.chdir "#{THEMEPATH}"do
# Rake::Task['assets:precompile'].invoke
# end
ENV["Template"] = template.name
ENV["Theme"] = theme.name
precompile_task = "bundle exec rake assets:precompile --trace 2>&1"
output = Dir.chdir(THEMEPATH) { %x[ #{precompile_task} ] }
flash[:notice] = "Asset created successfully"
else
flash[:notice] = "U have enter invalid data"
end
else
flash[:notice] = "U have enter invalid data"
end
end
이것은 내 코드가 여러 조건을 검사하고 해당 작업을 실행할 수 있도록 허용하고 있습니다.
컨트롤러와 lib를 넣음으로써이 코드를 시도했지만 작동하지 않습니다.
나는 또한 쉘 스크립트로 시도했다.
아무도 도와 줄 수 없습니까?
가 있다고 * 정말로 * 자산 컴파일이 사용되는 방법이 아닙니다. 배포 스크립트를 통해 배포 시간에 자동으로이 작업을 수행해야합니다. 이를 위해 GUI를 원할 이유가 없어야합니다. – meagar
답장을 보내 주셔서 감사합니다. 코드를 변경할 많은 의존성이 있었기 때문에 언제든지 스크립트를 실행할 필요가 있습니다. 서버에 액세스 할 수 없기 때문에 을 입력하여 GUI를 제공하고 있습니다. 그들 만이 스크립트를 실행할 수 있습니다. – Jenorish
@ МалъСкрылевъ 어떻게 파라미터를 전달할 수 있습니까? – Jenorish