You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Ruby on Rails应用打包为可执行文件(Ruby3.2.3/Rails7.1.3)

打包Ruby 3.2.3 + Rails 7.1.3应用为可执行文件的可行方案

针对你使用的Ruby和Rails版本,以下是几个适配当前版本的打包方案,按实用性排序:

1. Docker容器化(推荐,跨平台兼容性最强)

虽然不是原生可执行文件,但Docker能把整个应用环境(Ruby、Rails、依赖、配置)打包成镜像,对方只需安装Docker就能一键运行,无需担心版本兼容问题。

步骤:

  • 在项目根目录创建Dockerfile:
    FROM ruby:3.2.3-slim
    RUN apt-get update && apt-get install -y build-essential libpq-dev nodejs npm
    WORKDIR /app
    COPY Gemfile Gemfile.lock ./
    RUN bundle install --without development test
    COPY . .
    RUN RAILS_ENV=production bundle exec rails assets:precompile
    EXPOSE 3000
    CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
    
  • 构建镜像:docker build -t my_rails_app .
  • 导出镜像为本地文件:docker save -o my_rails_app.tar my_rails_app
  • 对方操作:导入镜像并运行,命令为docker load -i my_rails_app.tar && docker run -p 3000:3000 my_rails_app,之后访问http://localhost:3000即可使用。

2. ruby-packer(原生可执行文件)

社区维护的分支已适配Ruby 3.2+,能把Ruby解释器、依赖和应用打包成单个原生可执行文件,支持Linux和macOS。

步骤:

  • 找到社区维护的适配Ruby 3.x的ruby-packer分支,克隆到本地后进入目录编译工具:
    cd ruby-packer
    rake
    
  • 回到你的Rails项目根目录,执行打包命令(生成可执行文件my_app):
    ../ruby-packer/bin/rubyc -o my_app ./bin/rails server
    
  • 注意:打包前确保Gemfile.lock完整,所有依赖已通过bundle install安装;需针对目标操作系统分别打包(Linux包不能在macOS运行,反之亦然)。

3. Warbler(打包为WAR文件,适合Java环境)

可以把Rails应用打包成WAR文件,对方只需有Java 11+环境,就能通过Java命令直接运行,无需安装Ruby。

步骤:

  • 添加Warbler到开发依赖:
    # Gemfile
    gem 'warbler', group: :development
    
  • 安装依赖并生成配置:
    bundle install
    bundle exec warble config
    
  • 打包WAR文件:
    bundle exec warble war
    
  • 对方运行:java -jar your_app.war,之后访问http://localhost:3000即可。

注意事项

  • Rails应用依赖较多动态加载逻辑,原生可执行打包工具可能会遗漏部分依赖,打包后建议在目标系统测试运行。
  • Windows平台的原生打包支持较弱,优先推荐Docker或Warbler方案。

内容的提问来源于stack exchange,提问作者Fuoad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:42:36