标签: thin

如何将(机架)瘦服务器输出重定向到控制台?

瘦服务器具有-l选项以将输出重定向到日志文件(默认值:log/thin.log).有没有像webrick服务器那样的输出始终是控制台(和log/development.log)?

rack ruby-on-rails thin

10
推荐指数
1
解决办法
4708
查看次数

为什么我会收到"找不到精简适配器"?

我是一名非常缺乏Ruby经验的iOS开发人员,他试图在Heroku上运行API时遵循" iOS移动开发入门和Sinatra API ".

我抓住了Git上的示例项目,所以我知道我的设置与我应该拥有的相同.

我已经安装了捆绑包,并认为一切都准备好了,但每当我做的时候我都会foreman start得到这个:

2:14:56 web.1     | started with pid 5140
12:14:57 web.1     | No adapter found for {MY PROJECT'S FILEPATH}
12:14:57 web.1     | process terminated
12:14:57 system    | sending SIGTERM to all processes
Run Code Online (Sandbox Code Playgroud)

我做错了什么,或者我需要做些什么来让它运行?

谢谢!

ruby-on-rails heroku thin

10
推荐指数
1
解决办法
5765
查看次数

为什么我们在生产设置上需要nginx?

为什么我们需要在生产设置上安装瘦的nginx,因为瘦本身就是一个Web服务器.每个博文都有人使用ruby + rails + nginx + thin?

ruby ruby-on-rails nginx thin

10
推荐指数
1
解决办法
4453
查看次数

Thin EventMachine Sinatra vs. Rails

我一直在研究用EventMachine来处理一些工作的可能性.在Sinatra中,这似乎工作得很好,但Rails 3似乎在渲染视图之前执行所有刻度.

当我在瘦Web服务器下运行以下代码时,它的行为与预期一致.第一个请求立即返回,第二个请求正在等待3秒睡眠呼叫完成.这是预期的行为.

class EMSinatra < Sinatra::Base
  get "/" do
    EM.next_tick { sleep 3 }
    "Hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails 3运行中,我正在尝试做同样的事情:(在瘦下运行)

class EmController < ApplicationController
  def index
    EM.next_tick {
      sleep(3)
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails中,睡眠调用在将视图呈现给浏览器之前发生.结果是我等待3秒钟才能渲染初始页面.

有人知道为什么会这样吗?我不是在寻找评论,这是一个好的做法.我只是在试验.将小任务投入反应堆循环似乎是一件值得探讨的事情.如果我要进行一些非阻塞的http请求,为什么客户端必须等待?

ruby ruby-on-rails thin sinatra eventmachine

9
推荐指数
1
解决办法
3091
查看次数

使用`rails server`和`rackup`有什么区别?

我注意到的唯一区别是rails server在端口3000上启动服务器,同时rackup在端口9292上启动服务器.

还有其他差异吗?

是否存在一个用例而不是另一个用例?

ruby rack ruby-on-rails thin webrick

9
推荐指数
1
解决办法
3327
查看次数

Rails 3.2资产管道与Thin和Apache,没有找到资产

我的问题类似于这个带有乘客无尽错误的Rails 3.2资产管道,除了当我尝试实际去的时候

<link href="/assets/application-eed7996ee9017637f923133371ab3e92.css" media="all" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

我得到了404.这是我不明白的事情.它正在查看/ assets /,但是当我查看部署的代码时,资产只在/ public/assets中,这实际上是/ var/www/myapp/shared/assets的符号链接.那么世界上有什么责任告诉应用程序,查看/资产会产生正确的结果?

我正在使用Rails 3.2.0,ruby-1.9.3-p125,部署到Ubuntu,Apache和Thin.

我应该澄清一下:我的资产确实已部署到服务器上.一切都很好,直到他们需要服务,在这种情况下,production.log告诉我它正在/assets/application-eed7996ee9017637f923133371ab3e92.css中寻找它们,这是404的.

对于每个请求,我的thin.log

cache: [GET /] miss
Run Code Online (Sandbox Code Playgroud)

production.log

ActionController::RoutingError (No route matches [GET] "/assets/application-abecf2e096af9ee80697fd49e79a55e7.js"):
Run Code Online (Sandbox Code Playgroud)

更新 @Brandan感谢您的帮助.我的资产确实在RAILS_ROOT/public/assets.我把它放在我的Apache vhost文件中:

DocumentRoot /var/rails/myappname/current/public

RewriteEngine On
XSendFile On
XSendFilePath /var/rails/myappname #not even sure if this line is needed

<LocationMatch "^/assets/.*$">
    Header unset ETag
    FileETag None
    ExpiresActive On
    ExpiresDefault "access plus 1 year"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

我的RAILS_ROOT/config/environments/production.rb设置:

config.cache_classes = true
config.consider_all_requests_local = false …
Run Code Online (Sandbox Code Playgroud)

apache ruby-on-rails thin ruby-on-rails-3 asset-pipeline

9
推荐指数
1
解决办法
5962
查看次数

在没有精简gem的情况下启动瘦服务器不起作用

我使用的是ruby 1.9.3和rails 3.2.2.每次我使用瘦服务器与private_pub gem它不起作用我做了rackup private_pub.ru -s瘦-E生产.我收到以下错误

/home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:1:in `require': cannot load such file -- thin (LoadError)
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:1:in `<top (required)>'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in `const_get'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in `block in get'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in `each'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in `inject'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in `get'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/server.rb:269:in `server'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/server.rb:265:in `start'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/server.rb:137:in `start'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/bin/rackup:4:in `<top (required)>'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/bin/rackup:19:in `load'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/bin/rackup:19:in `<main>'
rzaartz@ubuntu:~/paper$ rvm 1.9.3
rzaartz@ubuntu:~/paper$ rackup private_pub.ru -s thin -E production
/home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:1:in `require': cannot load such file -- thin (LoadError)
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:1:in `<top (required)>'
    from /home/rzaartz/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler.rb:20:in …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails thin ruby-on-rails-3 ruby-on-rails-3.1 faye

9
推荐指数
2
解决办法
1万
查看次数

我可以在Sinatra中使用Thin启用SSL吗?

我在寻找一个简单的方法,以使在通过薄独立西纳特拉应用程序运行SSL,而不必通过--ssl,--ssl-key-file--ssl-cert-file在通过薄命令行参数.

是否可以直接在Sinatra应用程序中或通过config.ru文件定义它们?

我花了几个小时寻找这个问题的答案,但到目前为止还没有找到任何有效的方法.

ssl thin sinatra

9
推荐指数
2
解决办法
3868
查看次数

Sinatra与Puma合作?

我正在尝试在我的应用程序中利用Server-Sent Events.我正在使用Sinatra和sinatra-sse宝石.这个宝石包裹着Sinatra的stream :keep_alive召唤.

在Thin上运行我的应用程序时,我绝对没有问题,我的事件流按预期工作.然而,当我切换我的应用程序与Puma一起运行时,一切正常,除了我sse_stream绝对没有!它只返回一个空白页面.

我的流设置如此

get "/logstream/:server" do
    if rbcserver = MyApp.servers[params[:server]]
        sse_stream do |stream|     
            rbcserver.add_web_logger(stream)
            stream.callback { rbcserver.remove_web_logger(stream) }
        end
    else
        error 404
    end
end
Run Code Online (Sandbox Code Playgroud)

我这样开始瘦:

@@puma_instance = Puma::Server.new MyApp::WebUI
@@puma_instance.add_tcp_listener ip, port
@@puma_instance.run
Run Code Online (Sandbox Code Playgroud)

知道发生了什么事吗?任何帮助,将不胜感激.

编辑:更多信息这是cURL在Puma上运行时提供的

$ curl -L -b cookies.txt -c cookies.txt -i http://localhost:9001/logstream/myserver    
HTTP/1.1 200 OK
Content-Type: text/event-stream;charset=utf-8
X-Content-Type-Options: nosniff
Transfer-Encoding: chunked

$
Run Code Online (Sandbox Code Playgroud)

而这就是Thin上发生的事情

$ curl -L -b cookies.txt -c cookies.txt -i http://localhost:9001/logstream/myserver                                        
HTTP/1.1 200 OK
Content-Type: text/event-stream;charset=utf-8
X-Content-Type-Options: nosniff
Connection: …
Run Code Online (Sandbox Code Playgroud)

ruby rack thin sinatra puma

9
推荐指数
1
解决办法
2734
查看次数

Sinatra使用websocket客户端来响应http请求

我正在编写一个我想成为RESTful的Sinatra Web服务器,但问题是它必须与另一个通过Web套接字进行通信的服务器进行交互.所以,这需要发生:

  1. 请求从客户端进入我的Sinatra服务器
  2. 我的服务器打开外部服务器的Web套接字
  3. 我的服务器异步等待来自外部服务器的消息和东西,直到套接字关闭(这应该只需要大约200毫秒)
  4. 我的服务器向客户端发回响应

我确信这不是太复杂,但我有点卡在上面.基本上,如果整个Web套接字逻辑可以包装在单个函数中,那么该函数可以被阻塞,那就是那样.但我不知道如何包装Web套接字逻辑并阻止它.你怎么看?我所得到的简化版本如下.

require 'sinatra'
require 'websocket-client-simple'

get '/' do
     ws = WebSocket::Client::Simple.connect(' ws://URL... ')

     ws.on :message do
          puts 'bar'
     end

     ws.on :close do
          # At this point we need to send an HTTP response back to the client. But how?
     end

     ws.on :open do
          ws.send 'foo'
     end

end
Run Code Online (Sandbox Code Playgroud)

编辑

经过深思熟虑后,我意识到这可以通过线程停止和线程唤醒来实现.这感觉相当复杂,我不知道如何正确地使用Ruby,但这是一个想法:

require 'sinatra'
require 'websocket-client-simple'

get '/' do
    socketResponse('wss:// ... URL ...')

    'Got a response from the web socket server!'
end

def socketResponse(url)
    thread = Thread.new …
Run Code Online (Sandbox Code Playgroud)

rest asynchronous thin sinatra websocket

9
推荐指数
1
解决办法
458
查看次数