【发布时间】:2014-12-12 01:57:26
【问题描述】:
我在学习如何使用 Sinatra 时遇到了麻烦。我终于安装了 phusion-passenger 并在 Ubuntu 上使用我的 apache2。我有以下目录和文件
/var/www/html
/var/www/html/public
/var/www/html/tmp
/var/www/html/config.ru # this is a file
/var/www/html/config.ru的内容是从https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#_tutorial_example_writing_and_deploying_a_hello_world_rack_application复制而来的。
当我启动这个应用程序时,我得到了 hello world,这很棒。
接下来,我想构建一个 Sinatra 应用程序。我继续创建文件
/var/www/html/myapp.rb
包含http://www.sinatrarb.com/intro.html 描述的内容。我还做了一个gem install sinatra。我重新启动了apache。然后我去了http://localhost/,但我仍然看到我的config.ru 中的hello world。于是我用myapp.rb 覆盖了config.ru 的内容。我重新启动了apache。但现在我收到一条错误消息
missing run or map statement (RuntimeError)
/usr/lib/ruby/vendor_ruby/rack/builder.rb:133:in `to_app'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'
我做错了什么?如何构建 hello world Sinatra 应用程序?
【问题讨论】:
-
我建议先在单机模式下学习和测试 Sinatra。一旦您对这种方式感到满意,然后将其连接到Passenger。最初尝试使用Passenger只会混淆您需要理解的内容,并且更难以弄清楚堆栈中的哪些内容。就其本身而言,Sinatra 非常易于使用,并且不需要任何其他东西来处理 HTTP 请求。它是一个功能强大的小型网络服务器 DSL,尤其是与 Haml 和 Thin 搭配使用时。 Sinatra 的主页展示了如何创建一个“hello world”应用程序,实际上只需要三行代码即可。