代码之家  ›  专栏  ›  技术社区  ›  berkes

部署一个sinatra应用程序,乘客只给出404,页面未找到。不过,一个简单的机架式应用程序是可行的

  •  0
  • berkes  · 技术社区  · 14 年前

    我已经在Apache2上正确安装了passenger(或者可能没有安装)。Rack可以工作,但sinatra一直提供404。

    以下是有效的方法: 配置.ru

    #app = proc do |env|
      return [200, { "Content-Type" => "text/html" }, "hello <b>world</b>"]  
    end
    run app
    

    以下是有效的方法: ruby应用程序.rb 然后看着localhost:4567/about 以及/

    但接着是西纳特拉人进入大楼:

    require 'rubygems'
    require 'sinatra'
    
    root_dir = File.dirname(__FILE__)
    
    set :environment, ENV['RACK_ENV'].to_sym
    set :root,        root_dir
    set :app_file,    File.join(root_dir, 'app.rb')
    disable :run
    
    run Sinatra::Application
    

    和一个 附录rb

    require 'rubygems'
    require 'sinatra'
    
    get '/' do 
     "Hallo wereld!"
    end
    
    get '/about' do
     "Hello world, it's #{Time.now} at the server!"
    end
    

    正确地将这些列为“404”,其中有些让我担心:

    83.XXXXXXXXX - - [30/May/2010 16:06:52] "GET /about " 404 18 0.0007
    83.XXXXXXXXX - - [30/May/2010 16:06:56] "GET / " 404 18 0.0007
    

    让我担心的是,后面的空间和周围的空间。apache或sinatra会去寻找/[空间],比如/%20?

    也许我只是在装傻,弄得“一切都错了?”

    否则,任何关于在运行的机架、sinatra或passenger应用程序上从何处获取、读取或记录更多开发人员数据的提示都会很有帮助:例如,看看sinatra在寻找什么。

    其他一些信息:

    2 回复  |  直到 14 年前
        1
  •  3
  •   Adrian    14 年前

    您没有在app.rb中加载路由。为此,请更换 require 'sinatra' require File.join(File.dirname(__FILE__), 'app.rb') 在config.ru中。

    root_dir = File.dirname(__FILE__)
    app_file = File.join(root_dir, 'app.rb')
    require app_file
    
    set :environment, ENV['RACK_ENV'].to_sym
    set :root,        root_dir
    set :app_file,    app_file
    disable :run
    
    run Sinatra::Application
    

    set :app_file 不会帮你装的。

        2
  •  0
  •   asymmetric    14 年前

    只要替换 require sinatra require 'app' 你准备好了。