在浏览器中运行Ruby
Ruby快速起步 案例是终端运行ruby脚本,但是ruby的灵活性和表现力导致David Heinemeier Hansson(通常简称为"DHH")开发了 Ruby on Rails 框架在浏览器中运行ruby。此外,简单的ruby程序,也可以通过 Sinatra 微框架来完成,这里的案例我主要是实践一遍了解流程概况(从github推送到heroku)。
安装微框架
创建gem安装配置,去除文档安装部分:
创建
~/.gemrc
echo "gem: --no-document" >> ~/.gemrc
安装需要的 gem
安装需要的gems
gem install sinatra
gem install rackup
gem install puma
hello_app.rb
hello_app.rb
包含最简单的如下内容
最简单的hello
require 'sinatra'
get '/' do
'Hello world!'
end
然后执行运行命令
运行
ruby hello_app.rb
终端输出信息:
运行输出信息
/home/admin/.rvm/gems/ruby-3.3.4/gems/sinatra-4.0.0/lib/sinatra/base.rb:1849: warning: Rack::Logger is deprecated and will be removed in Rack 3.2.
== Sinatra (v4.0.0) has taken the stage on 4567 for development with backup from Puma
Puma starting in single mode...
* Puma version: 6.4.2 (ruby 3.3.4-p94) ("The Eagle of Durango")
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 44955
* Listening on http://127.0.0.1:4567
* Listening on http://[::1]:4567
Use Ctrl-C to stop
此时访问本地回环地址 4567 端口,就可以看到浏览器输出内容 hello, world!
部署到Heroku
备注
在 heroku官网 注册账号,并且提交了支付方式(似乎不能使用国内信用卡)之后才能创建应用
警告
我没有搞定heroku的信用卡支付功能,所以实际上没有完成这步部署。不过,我整理记录了一下,理解了这个部署:
heroku 会根据你本地仓库的git配置来完成heroku的应用创建
完成应用创建后,heroku就会和你git仓库绑定,自动从git仓库下载源代码,并完成持续部署(只要仓库变动就自动完成部署)
我自己也能够部署 GitLab 来完成这个流程,自己部署更有乐趣
首先安装 Heroku CLI
执行heroku应用创建:
创建heroku应用
heroku create
在项目目录下创建一个
config.ru
配置,包含以下内容:
heroku 配置 config.ru
require './hello_app'
run Sinatra::Application
配置一个Gemfile列出需要的gem组件:
创建Genfile列出需要的组件,类似于Python的 requirements.txt
source 'https://rubygems.org'
ruby '3.3.4'
gem 'sinatra'
gem 'puma'
现在需要使用
bundler
打包然后推送:
使用
bundler
打包并推送仓库gem install bundler
bundle install
# 这里会生成一个锁定文件 Gemfile.lcok,内容是根据Gemfile生成的详细配置
bundle lock --add-platform x86_64-linux
git add -A
git commit -m "Add deployment configuration"
# 这条命令似乎有问题,待以后实践
git push heroku main