【问题标题】:Sinatra, modular style. What did I do wrong?Sinatra,模块化风格。我做错了什么?
【发布时间】:2012-02-04 23:58:33
【问题描述】:

我使用 Sinatra 模块化风格,我不知道会出现什么问题。我搜索了谷歌,但没有找到任何东西

require 'sinatra/base'

class App < Sinatra::Base

  get '/' do
    haml '%h1 Test'
  end

end

run App

查看 test.rb:12:in &lt;main&gt;': undefined methodrun' for main:Object (NoMethodError) 怎么了?

【问题讨论】:

  • App.run! 而不是run App?
  • == Sinatra/1.2.1 已在 4567 上进行开发,从 Thin >> Thin Web 服务器(v1.2.8 代号 Black Keys)>> 最大连接数设置为 1024 >> 监听在 0.0.0.0:4567,CTRL+C 停止 /home/maxfry/.rvm/gems/ruby-1.9.2-p136@rails3/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in ` start_tcp_server':从 /home/maxfry/.rvm/gems/ruby-1.9.2-p136@rails3/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in 没有接受器(RuntimeError)
  • 您可以编辑您的原始帖子并将您当前的所有代码添加到当前内容下方吗?如果我们能看到你现在拥有的东西,其他人会更容易提供帮助。

标签: ruby sinatra


【解决方案1】:

您是否通过 ruby​​ -rubygems hi.rb 运行它(假设此代码在 hi.rb 中)。如果是这样,您不需要运行 App。除非您通过另一个基于 Sinatra 构建的框架来运行它。

还可能想要包含 haml...

你有一个 config.ru:

# config.ru
require 'my_app'
run MyApp

还有一个 my_app.rb:

# my_app.rb
require 'sinatra/base'
require 'haml'

class MyApp < Sinatra::Base

get('/') { haml '%h1 Test' }

  # start the server if ruby file executed directly
  run! if app_file == $0
end

然后在运行 my_app.rb 的文件夹中,在 localhost:4657 上启动应用程序:

rackup -p 4567

【讨论】:

  • 是的,当然,在我的示例中我忘记了 require 'haml'。但这没有用。
  • 好的,做了一些修改。我读错了你的原帖。这应该让你继续前进。如果您想渲染页面而不是来自 my_app.rb 的代码 - 您可以执行“haml:pagename”,它将渲染 ./views/pagename.haml
  • 在此之后我有一个新问题:config.ru:5:in `block in
    ': uninitialized constant Rack::Builder::App (NameError)
  • 如果我不使用模块化样式,所有渲染都很好,我在浏览器中看到了测试。
  • 我上面的设置是模块化的。你仍然应该有一个 config.ru。
【解决方案2】:

关于上面的评论显示下面的错误:

`start_tcp_server': no acceptor (RuntimeError)

当您尝试绑定到已绑定的端口时会出现此问题。尝试不同的端口号应该可以解决。

【讨论】:

  • 和我一样,这一定是答案
猜你喜欢
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
相关资源
最近更新 更多