标签: sinatra

如何在 Sinatra 中制作代理?

我想制作一个简单的 Sinatra 应用程序,当我导航到“/proxy/:someurl”时,我会看到直接导航到 :someurl 的确切内容,也就是一个简单的网络代理,有点像一个完整的页面 iframe。

做这个的最好方式是什么?

html ruby proxy sinatra

0
推荐指数
1
解决办法
2898
查看次数

如何在Sinatra中隐藏url的句子

我有一个Sinatra网络应用程序.

这样的网址:

http://test.com:9393/signup?username=&email=liubei@test.com&nickname=&gender=&birthday=&password=123456&password_confirmation=123456

如何删除url中的params.Make浏览器中的url是:http://test.com:9393/signup

也可以得到参数

ruby url sinatra

0
推荐指数
1
解决办法
728
查看次数

如何让乘客和车辆一起工作?

rvm事先已经安装好了.我决定从一个包(nginx-full和passenger)安装乘客,并希望使用ruby安装的rvm.但不知怎的,它不起作用.这是sinatra我正在使用的测试应用程序(~yuri/a1/app.rb):

require 'rubygems'
require 'sinatra'

get '/' do
  "Hello and Goodbye"
end
Run Code Online (Sandbox Code Playgroud)

〜尤里/ A1/config.ru:

require 'rubygems'
require 'sinatra'

require './app.rb'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

nginx.conf:

http {
    ...
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
        # the paths in the above file point out to debian repository's ruby version
    server {
        server_name a1;
        root   /home/yuri/a1;
        access_log   /var/log/nginx/a1-access.log;
        error_log   /var/log/nginx/a1-error.log;
        passenger_enabled   on;
        passenger_ruby   /home/yuri/.rvm/wrappers/ruby-1.9.3-p385@a1/ruby;
    }
}
Run Code Online (Sandbox Code Playgroud)

但当我w3m http://a1 access.log说:

127.0.0.1 - - [12/Sep/2013:21:14:58 +0300] …
Run Code Online (Sandbox Code Playgroud)

ruby passenger nginx sinatra rvm

0
推荐指数
1
解决办法
2676
查看次数

Ruby一行ifelse语句不能与Sinatra命令一起使用?

当我使用if/elseSinatra命令的缩写语句时,我收到语法错误:

request.cookies['blog'].nil? ? erb :blog : redirect '/done'
Run Code Online (Sandbox Code Playgroud)

返回此错误:

/home/sinatra/ptt/ptt.rb:107: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' request.cookies['blog'].nil? ? "erb :blog" : redirect '/done' ^
Run Code Online (Sandbox Code Playgroud)

这两个语句本身都会产生错误(没有Sinatra代码作为另一个语句).

这是一个Sinatra问题还是语法不正确?

当true/false语句是纯Ruby时,不会发生错误:

request.cookies['blog'].nil? ? foo = 1 : bar = 2
Run Code Online (Sandbox Code Playgroud)

ruby sinatra

0
推荐指数
1
解决办法
321
查看次数

Ruby 应用程序认为客户端的 IP 地址始终相同

Sinatra 应用程序。

<%= request.ip %>
Run Code Online (Sandbox Code Playgroud)

如果从本地服务器查看,会给出127.0.0.1 IP 地址。如果从 Heroku 服务器查看,无论来自哪个设备,
都会给出83.245.226.68 IP 地址。
所以我猜它返回服务器的 IP 地址而不是客户端的。那么我如何找出客户端的IP地址呢?我误解了request.ip方法吗?

ip heroku sinatra

0
推荐指数
1
解决办法
607
查看次数

Redis Pub / Sub导致Web套接字连接挂起

我正在构建一个通过Web套接字连接到服务器的Web应用程序。服务器组件是基于一个小Ruby应用程序sinatraredisfaye-websocket。服务器正在Phusion Passenger上运行。一个单独的updater守护进程不断从各种来源获取更新,并将其发布到redis(使用redisgem和Redis::publish)。

为了将更新推送给客户端,我在Sinatra应用程序中尝试了以下操作:

get '/' do
  if Faye::WebSocket.websocket?(request.env)
    store = Redis.new
    ws = Faye::WebSocket.new(request.env)

    ws.on(:open) do |event|
      store.incr('connection_count')
      puts 'Client connected (connection count: %s)' % store.get('connection_count')
    end

    ws.on(:close) do |event|
      store.decr('connection_count')
      puts 'Client disconnected (connection count: %s)' % store.get('connection_count')
    end

    ws.rack_response

    store.subscribe(:updates) do |on|
      on.message do |ch, payload|
        puts "Got update"
        ws.send(payload) if payload
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这仅部分起作用。客户端可以成功连接,也可以接收更新,但store.incrand store.decr调用不起作用。另外,连接似乎没有正确关闭-当我启动多个客户端时,我注意到连接堆积,乘客服务器最终停止工作。

日志输出:

devserver_1 | App 614 stdout: Got …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra websocket redis

0
推荐指数
1
解决办法
634
查看次数

在应用程序中需要 Sinatra Gem 时出现 LoadError

我正在关注教程http://learnrubythehardway.org/book/ex50.html,它提供了:

创建尽可能最基本的 Sinatra 应用程序。将以下代码放入bin/app.rb

require 'sinatra'

set :port, 8080
set :static, true
set :public_folder, "static"
set :views, "views"

get '/' do
    return 'Hello world'
end
Run Code Online (Sandbox Code Playgroud)

我安装了 gem 和 Sinatra 没有任何问题。我还将教程中的内容复制app.rb到本地bin/app.rb文件中。

我运行它:ruby bin/app.rb

终端输出:

/home/t/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require': cannot load such file -- sinatra (LoadError)
    from /home/t/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in 'require'
    from bin/app.rb:1:in `<main>
Run Code Online (Sandbox Code Playgroud)

当我运行时rake test它通过了测试。有什么问题?

ruby sinatra learn-ruby-the-hard-way

0
推荐指数
1
解决办法
2501
查看次数

转储到yaml文件后为什么负值变为正值?

我有一个简单的sinatra应用程序使用yaml文件来处理数据.其中一个特点是User可以投票或否决Question.投票功能很好,但在实施否决功能时我遇到了一些奇怪的事情.

简单地说:

  • 当问题的当前votes_count为正(>= 1)时,数字将正确减少
  • 但是当一个问题的当前votes_count值为零或负数时,该数字将在data散列中成功减少,但在转储data哈希进入yaml文件后,负数变为正数.

这是yaml文件Question:

'1': !ruby/hash:Sinatra::IndifferentHash
  title: " Best way to require all files from a directory in ruby?"
  description: What's the best way to require all files from a directory in ruby ?
  user_id: '3'
  votes_count: 0

# other user information
Run Code Online (Sandbox Code Playgroud)

这是与否决权功能相关的路由处理程序:

post "/questions/:id/veto" do
  check_vote_validity_for_question(params[:id])
  @question = Question.find_by(:id, params[:id])
  @question.votes_count = (@question.votes_count.to_i - 1)
  Question.update(params[:id], votes_count: @question.votes_count )
  # omit …
Run Code Online (Sandbox Code Playgroud)

ruby yaml sinatra

0
推荐指数
1
解决办法
123
查看次数

如何创建基于Sinoku的Sinatra应用程序

我试图创建基于Sinatra的heroku应用程序没有任何运气?

ruby heroku sinatra

-5
推荐指数
1
解决办法
1282
查看次数

标签 统计

sinatra ×9

ruby ×8

heroku ×2

html ×1

ip ×1

learn-ruby-the-hard-way ×1

nginx ×1

passenger ×1

proxy ×1

redis ×1

rvm ×1

url ×1

websocket ×1

yaml ×1