2013-10-21 52 views
2

要開始我的Rails應用程序,我先去/var/www/html/app dir。
然後我執行其餘的兩個命令。如何縮短與Rails相關的命令?

1. $ cd /var/www/html/app 
2. $ bundle exec rake sunspot:solr:start RAILS_ENV=production 
3. $ unicorn_rails -c config/unicorn.rb -E production -D 

我想省略第一行。並把它放入第二和第三命令。
可能嗎?

回答

2

我發現解決這個問題的最好方法就是創建你自己的shell腳本。這在很多方面都非常簡單而且有用。

#!/bin/sh 
# file-name: app-start.sh 
cd /var/www/html/app 
bundle exec rake sunspot:solr:start RAILS_ENV=production 
unicorn_rails -c config/unicorn.rb -E production -D 

然後

chmod +x app-start.sh 
./app-start.sh 
+0

這取決於。我的策略是,我會把它放在我容易找到的地方,可能在'〜/ scripts'中,然後建立到/ usr/local/bin的符號鏈接,確保它包含在你的$ PATH中。 然後你可以在任何地方調用你的腳本。 – nXqd

+0

如果我不使用$ PATH,該怎麼辦?我仍然可以在shell命令中編寫完整的絕對路徑嗎?如果是這樣,我該怎麼寫?你能舉個例子嗎? – MKK

+1

是的,你可以做到這一點,例如在我的情況下,我把腳本放在'〜/ scripts'中。然後我可以像這樣調用它'〜/ scripts/app-start.sh'。 – nXqd

2

你可以設置一個別名,一次做所有事情。現在,當你鍵入run_app步驟1至3將執行

alias run_app="cd /var/www/html/app; bundle exec rake sunspot:solr:start RAILS_ENV=production; unicorn_rails -c config/unicorn.rb -E production -D"

然後:

如果使用巖組例如,您可以添加這~/.zshrc

+0

謝謝。我試圖設置到'/ etc/rc.d/rc.local'中,以便它自動執行命令。我不在尋找別名。我只想知道如何縮短我的原始命令,以及如何放入'/ etc/rc.d/rc.local'以啓用服務器啓動時的自動啓動。 – MKK

2

您可以用鏈& &操作任意數量的命令
cd /var/www/html/app && bundle exec rake sunspot:solr:start RAILS_ENV=production && unicorn_rails -c config/unicorn.rb -E production -D

+0

謝謝:),我可以將整行粘貼到'/etc/rc.d/rc.local'末尾 – MKK

+0

試圖將其粘貼到'/ etc/rc.d/rc.local'的末尾,然後重新啓動。但它似乎不工作:( – MKK

0

是。您可以使用這些命令:

/var/www/html/app/bundle exec rake sunspot:solr:start RAILS_ENV=production 
/var/www/html/app/unicorn_rails -c config/unicorn.rb -E production -D 
1

您可以使用foreman來啓動和管理這些不同的進程。

  1. $ cd /var/www/html/app
  2. 創建一個名爲Procfile這些過程,例如文件:

    網站:unicorn_rails -c配置/ unicorn.rb -E生產-D(斷行,不知道爲什麼會這樣 搜索:bundle exec rake太陽黑子:solr:start RAILS_ENV =生產

  3. foreman start開始進程。

這就是你在Heroku上託管你的應用程序時要做的事情。