如何使ruby脚本在启动时启动?

如何使ruby脚本在启动时启动?,ruby,gem,init,Ruby,Gem,Init,我刚刚编写了我的第一个ruby脚本。它的目的是在服务器上运行命令,无论何时从调用它 现在我有了一个工作脚本,如何“部署”它 我需要: 轻松地将脚本放置在puppet服务器上 重新启动后自动启动此脚本 我想我可以把一颗宝石变大,但是我如何自动启动脚本呢 我正在研究的选项: 更新 我已经创建了一个rubygem,我可以用puppet部署它 package {'r10k_gitlab_webhook': ensure => latest, provider =&

我刚刚编写了我的第一个ruby脚本。它的目的是在服务器上运行命令,无论何时从调用它

现在我有了一个工作脚本,如何“部署”它

我需要:

  • 轻松地将脚本放置在puppet服务器上
  • 重新启动后自动启动此脚本
我想我可以把一颗宝石变大,但是我如何自动启动脚本呢

我正在研究的选项:



更新

我已经创建了一个rubygem,我可以用puppet部署它

  package {'r10k_gitlab_webhook':
    ensure   => latest,
    provider => gem,
  }

我仍然不知道如何确保每次启动服务器时都执行此脚本

我成功地使用fpm()从ruby stuff创建debian包。我不会将它用于更大规模的任务,但它完全适合(我的)内部故事

然后,进入rc.d/init,了解如何在特定的运行级别启动它。这取决于您使用的发行版(假设它是unixoid系统)

我的标准路线是安装一个apache、phusion passenger,然后创建一个基于sinatra/rack的应用程序来完成这项工作,并让apache处理“autostart”和“webrick”部分(不再是webrick)

但我之所以选择这一点,是因为在我的场景中所讨论的机器无论如何都运行apache,并且周围的工具都是我的“工具带”的一部分。如果你打算使用类似的技术,我认为这是一个有效的解决方案


如果我没记错的话,thin webserver也有一个用于注册自身的安装命令。

对我来说有效的解决方案是使用
请参见

我是这样做的:

# Assumes ruby > 1.9, and r10k_gitlab_webhook is in path
gem install pleaserun
gem install r10k_gitlab_webhook
pleaserun  --install --user git --group git --description 'Starts webserver on port 8000' r10k_gitlab_webhook 8000
这将在/etc/init/r10k\u gitlab\u webhook.conf中创建以下文件。
请注意,这是一个centos特定的初始化文件。如果你在ubuntu上运行pleaserun,它将创建一个upstart文件

description     "Starts webserver on port 8000"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]

respawn
umask 022
#nice
#chroot /
#chdir /
#limit core <softlimit> <hardlimit>
#limit cpu <softlimit> <hardlimit>
#limit data <softlimit> <hardlimit>
#limit fsize <softlimit> <hardlimit>
#limit memlock <softlimit> <hardlimit>
#limit msgqueue <softlimit> <hardlimit>
#limit nice <softlimit> <hardlimit>
#limit nofile <softlimit> <hardlimit>
#limit nproc <softlimit> <hardlimit>
#limit rss <softlimit> <hardlimit>
#limit rtprio <softlimit> <hardlimit>
#limit sigpending <softlimit> <hardlimit>
#limit stack <softlimit> <hardlimit>


exec chroot --userspec git:git / r10k_gitlab_webhook "8000"
description“在端口8000上启动Web服务器”
在文件系统或运行级别启动[2345]
在运行级别停止[!2345]
重生
乌马斯克022
#好的
#克洛特/
#chdir/
#极限磁芯
#限制cpu
#极限数据
#限制fsize
#限制内存锁
#限制msgqueue
#极限尼斯
#限制nofile
#限制nproc
#限制rss
#限制rtprio
#限制信号挂起
#极限堆栈
exec chroot——userspec git:git/r10k\u gitlab\u webhook“8000”

现在,该服务将在每次启动时启动

在我的公司,当我的老板需要在启动时运行我的脚本时,我们只是将脚本放在启动文件夹中,但我不确定这是否适用于你。另一个需要尝试的是任务调度器。只要扣动扳机。将它指向ruby脚本和bam。祝你好运

你的问题和答案都做得很好。也许你应该“接受”你自己的答案来标记这个问题的答案。谢谢,一旦最短时间过去,我会做的。
description     "Starts webserver on port 8000"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]

respawn
umask 022
#nice
#chroot /
#chdir /
#limit core <softlimit> <hardlimit>
#limit cpu <softlimit> <hardlimit>
#limit data <softlimit> <hardlimit>
#limit fsize <softlimit> <hardlimit>
#limit memlock <softlimit> <hardlimit>
#limit msgqueue <softlimit> <hardlimit>
#limit nice <softlimit> <hardlimit>
#limit nofile <softlimit> <hardlimit>
#limit nproc <softlimit> <hardlimit>
#limit rss <softlimit> <hardlimit>
#limit rtprio <softlimit> <hardlimit>
#limit sigpending <softlimit> <hardlimit>
#limit stack <softlimit> <hardlimit>


exec chroot --userspec git:git / r10k_gitlab_webhook "8000"