maxfry
maxfry

Reputation: 357

Sinatra, modular style. What did I do wrong?

I use Sinatra modular style, i don't know what going bad. I serach google but didn't find anything

require 'sinatra/base'

class App < Sinatra::Base

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

end

run App

And a see test.rb:12:in <main>': undefined methodrun' for main:Object (NoMethodError) What going wrong?

Upvotes: 2

Views: 5086

Answers (2)

newtriks
newtriks

Reputation: 1454

Regarding the comment above where the error below is displayed:

`start_tcp_server': no acceptor (RuntimeError)

This appears when you are trying to bind to an already bound port. Trying a different port number should resolve.

Upvotes: 2

Jared
Jared

Reputation: 964

did you run it via ruby -rubygems hi.rb (assuming this code is in hi.rb). If so, you don't need run App. Unless you are running it through another framework built on/with Sinatra.

Also might want to include haml...

You have a config.ru:

# config.ru
require 'my_app'
run MyApp

and a 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

then in the folder where the my_app.rb is run this to start the app on localhost:4657:

rackup -p 4567

Upvotes: 10

Related Questions