2014-12-02 125 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

相关问题