2014-12-02 99 views
0

我對Sinatra很新,我試圖讓資產管理&編譯工作根據this article。這是到目前爲止,我的主要文件:Sinatra退出沒有錯誤

require 'sinatra/base' 
require 'sinatra/assetpack' 
require 'sass' 

class App < Sinatra::Base 
    register Sinatra::AssetPack 
    assets do 

    css :application, [ 
     '/css/main.scss' 
    ] 

    css_compression :sass 

    end 


    get '/hi' do 
    erb "Hello World!" 
    end 
end 

但是,由於某些原因,當我運行ruby main.rb,它只是退出無故障或任何東西。是否有一個特殊的關鍵字來讓應用程序提供文件?

+0

你有沒有設置config.ru文件? – bigtunacan 2014-12-02 20:48:48

回答

3

使用西納特拉應用的模塊化的風格,因爲你正在做的,運行ruby main.rb是怎麼回事,因爲它被視爲標準的Ruby應用程序沒有錯誤,退出並沒有Web服務器是曾經創造。

您有兩種選擇。

1在你的例子中最後的end聲明之前加上run! if app_file == $0。 這將允許您運行該應用程序ruby main.rb

2(這是首選的方法)創建具有以下內容的機架文件config.ru

require './main.rb' 
run App 

現在你可以用命令rackup -p 4567其中4567是您要使用任何端口號服務應用程序。

0

您需要start the application

require 'sinatra/base' 
require 'sinatra/assetpack' 
require 'sass' 

class App < Sinatra::Base 
    register Sinatra::AssetPack 
    assets do 

    css :application, [ 
     '/css/main.scss' 
    ] 

    css_compression :sass 

    end 


    get '/hi' do 
    erb "Hello World!" 
    end 

    run! if app_file == $0 
end 
0

一個觀察,再培訓局應指向一個模板,例如:

get '/hi' do 
    erb :home 
end 

應該尋找一個文件中../views/home.erb

而且假設你已經做了gem install sinatra。我還會在Sinatra開發時使用重新運行的寶石,gem install rerun,然後rerun ruby app.rb。當您更改代碼時,重新運行將重新加載您的項目,以便您在進行更改時不必重新啓動應用程序。

+0

這與原文有點相似,但要清楚的是,傳遞到'erb'中的'template'可以是一個字符串,它不需要像指示的那樣指向一個'.erb'文件這裏。 – bigtunacan 2014-12-03 16:10:25

相關問題