2013-10-21 19 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上托管你的应用程序时要做的事情。