如何最佳地打包一个Ruby on Rails应用程序?

5
我创建了一个基本计算器功能的Ruby on Rails应用程序。现在我想将此应用程序打包,上传至Github,下载到Jenkins并创建一个Jenkins作业来运行此Ruby应用程序。
通常,如果这是一个Java应用程序,您将把它打包成jar文件,然后运行jar文件。那么我该如何将这个Ruby应用程序打包呢?
我考虑将此应用程序打包为Ruby Gem,但是Ruby Gems主要用于在另一个Ruby应用程序中使用你的Ruby应用程序,对吗?我想要将此应用程序作为独立应用程序运行。
即使我将Ruby on Rails应用程序打包为Ruby Gem,我如何将其作为独立Gem运行?从命令行运行它的命令是什么?

你可能需要查看可以在JVM上运行的jRuby实现。否则,Rails应用程序不会打包为Java应用程序,而是由像Unicorn或Passenger这样的Web服务器运行。 - Lukasz Muzyka
我觉得你可能误解了我的意思。我并不是试图将我的Ruby应用程序打包成一个Java应用程序。我只是拿Java应用和Jar文件作比较,这样人们就能理解我试图将Ruby应用程序打包成的那种文件,并询问是否有Ruby等效的Jar文件。 - user1842633
2个回答

5
与Java应用程序不同,它们将打包作为一级公民(无论是jar还是war),这个概念在大多数开发环境中并没有被固化。这就是为什么有一个大力推动使用Docker的原因,它允许您隔离应用程序(以及gem依赖项)并将其插入生产环境,就像将war放入容器中一样。
以下是有关如何将Rails应用程序docker化的文章: https://semaphoreci.com/community/tutorials/dockerizing-a-ruby-on-rails-application

谢谢您的文章!不过我有一些问题。我正在阅读这篇文章,它展示了他们使用了一个Ruby on Rails应用程序。他们是将Rails应用程序打包成gem文件还是直接开始使用而没有打包文件呢?另外,我该如何将这个docker化的应用程序与Jenkins结合使用?如果您还记得,最终目标是从Jenkins作业中运行这个ruby应用程序。我该如何在Jenkins中运行一个docker化的应用程序? - user1842633
1
在开发环境中,您可以使用rails server命令来使用Rails gem中的嵌入式服务器,但在生产环境中,您应该构建一个Docker镜像,该镜像将由Docker容器执行。 Docker容器是虚拟化进程的管理器。Jenkins有一个插件,提供Docker支持。https://wiki.jenkins-ci.org/display/JENKINS/Docker+build+step+plugin - Raphael

1
Jarbler将Ruby应用程序打包成一个自执行的jar文件,其中包括其Gem依赖项。
> gem install jarbler
> cd app_dir
> jarble        # create the jar file with jRuby runtime

应用程序可以通过以下方式启动,而无需 jRuby 环境:
> java -jar AppName.jar

如果您想更改配置(默认为Rails应用程序),请通过生成和调整配置文件来实现
> jarble config 

另请参阅:https://github.com/rammpeter/jarbler


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接