标签: sinatra

使用Sinatra和rspec对控制器方法进行存根

所以我试图想出一种方法来为一个Sinatra应用程序在rspec中存储一个控制器方法.其主要原因是测试应用程序的逻辑流程,并确保在满足某些条件时调用必要的函数.所以,从本质上讲,我希望能够做类似的事情

controller.should_receive(:fancy_method).and_return("This is a string")
Run Code Online (Sandbox Code Playgroud)

我遇到的困难是访问sinatra应用程序中的控制器实例.我能够使用sinatra控制器类上的class_eval覆盖当前函数,但我想断言这些函数实际运行.

有人有什么建议吗?

谢谢.

ruby rspec sinatra

7
推荐指数
1
解决办法
2983
查看次数

如何在sinatra应用程序中html_escape文本数据?

我有一个小的Sinatra应用程序,它从ERB模板为我生成html片段.

我如何html_escape输出?

Sinatra中不存在<%= h somestring%>帮助器.

ruby xss sinatra

7
推荐指数
1
解决办法
4670
查看次数

在sinatra + heroku应用程序中存储管理员密码的位置?

我有一个我在Heroku上运行的小型Sinatra应用程序,它使用单个管理员密码,以及一些API身份验证密钥.

哪里是存放这些东西的最佳地点?我是否将它们放在环境变量中,然后使用

heroku config:add ADMIN_PASSWORD=foobar
Run Code Online (Sandbox Code Playgroud)

?或者我使用包含它们的配置文件,我只是不提交配置文件?

security heroku sinatra

7
推荐指数
1
解决办法
1651
查看次数

Ruby:JSON.parse返回未定义的方法`bytesize'

response = Typhoeus::Request.get("http://localhost:3000/api/api_email/#{@api_id}.json")
    JSON.parse(response.body)
Run Code Online (Sandbox Code Playgroud)

响应是一个JSON对象,但在尝试解析它时出错.

undefined method `bytesize' for 
Run Code Online (Sandbox Code Playgroud)

我想访问JSON对象.

错误:

NoMethodError at /api/v1/a71040739d6cc50e89aff56601af67/2011-10-1
undefined method `bytesize' for {"xpto"=>{"email

"=>"test@gmail.com"}}:Hash

file: utils.rb location: bytesize line: 239
Run Code Online (Sandbox Code Playgroud)

回溯:

/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in service
      si.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/httpserver.rb in run
          server.service(req, res)
/Users/donald/.rvm/rubies/ruby-1.9.2-rc2/lib/ruby/1.9.1/webrick/server.rb in block in start_thread
          block ? block.call(sock) : run(sock)
Run Code Online (Sandbox Code Playgroud)

这是如何生成的:

 @api_id = params[:api_id]
 @bucket = Bucket.where(:api => @api_id)
 respond_with(@bucket, :only => [:email])
Run Code Online (Sandbox Code Playgroud)

返回的.json文件包含:

[{"xpto":{"email":"test@gmail.com"}}]
Run Code Online (Sandbox Code Playgroud)

ruby json sinatra

7
推荐指数
1
解决办法
5520
查看次数

在本地测试Sinatra上的HTTPS

当我通过HTTPS访问时,我需要测试页面上某些元素的行为 - 我想知道如何使用HTTPS在本地测试这个sinatra应用程序.如果我的问题甚至没有意义,我很抱歉,但我想通过HTTPS通过我的网络浏览器连接到localhost.

ruby thin sinatra

7
推荐指数
1
解决办法
1841
查看次数

ruby中的数据库连接池

我刚开始使用Ruby,我正在玩Sinatra,但找不到在请求之间共享数据库连接的方法.

我来自Java web developpement,你要做的一件事就是集中数据库连接,所以我确信Ruby中存在类似的东西,但我找不到它.

ActiveRecord和DataMapper提供此功能,但我不需要ORM,只想进行常规SQL查询.

Sinatra是否有一些特定的方法,或者所有基于Rack的应用程序都有通用的方法?

ruby sinatra

7
推荐指数
1
解决办法
3955
查看次数

少挂Sinatra应用程序

我正在尝试将Bootstrap添加到Sinatra应用程序中.我有设置路由编译bootstrap.lessresponsive.less.在Web浏览器中单独加载两个样式表按预期方式工作.但是当我尝试在html页面中使用它们时,我的应用程序就会挂起.我只能停止申请kill -9.

似乎以某种方式减少导入和多个样式表会导致应用程序挂起.我能够找出问题所在:

app.rb

require 'rubygems'
require 'bundler/setup'

require 'sinatra'
require 'less'

get '/' do
  haml :index
end

get '/style1.css' do
  less :style1, :paths => ['views'] 
end

get '/style2.css' do
  less :style2, :paths => ['views'] 
end
Run Code Online (Sandbox Code Playgroud)

意见/ index.haml

!!! 5
%html
  %head
    %title Hello World
    %link{'rel' => 'stylesheet', 'href' => 'style1.css', 'type' => 'text/css'}
    %link{'rel' => 'stylesheet', 'href' => 'style2.css', 'type' => 'text/css'}
  %body
    %h1 Hello World
    %p Hello World
Run Code Online (Sandbox Code Playgroud)

意见/ style1.less

@import "mixins.less"; …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra less

7
推荐指数
1
解决办法
348
查看次数

不使用端口时使用的端口

我正在尝试运行以下Sinatra应用程序并收到一条错误消息,告诉我无法启动服务器,因为端口已经在使用或因为我没有root权限.在启动Sinatra应用程序之前,我从未遇到过这个问题.几天前我更新了Mountain Lion以获取我的mac,并想知道这可能是导致问题的原因.我也使用RVM.任何人都可以提出建议......

require "sinatra"

class MyApp < Sinatra::Base
 get '/' do
    "Hello from MyApp"

 end

end 

== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop
/Users/me/.rvm/gems/ruby-1.9.2-p290@global/gems/eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
Run Code Online (Sandbox Code Playgroud)

更新:我仍然可以在我的机器上运行rails服务器,所以我认为问题是针对Sinatra的.此外,几天前,当我开始使用这个指导我明确设置端口的Rack Tutorial时,我能够运行Sinatra应用程序 .我想知道这是否会永久改变.

>> Rack::Handler::WEBrick.run my_rack_proc, :Port => 9876
[2011-10-24 11:32:21] INFO  WEBrick 1.3.1
[2011-10-24 …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra

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

无法加载此类文件 - rack/handler/puma

我的设置和错误

当我用机架和美洲狮开始我的Sinatra应用程序时出错.我的config.ru文件看起来像这样:

#\ -s puma
require './controller/main.rb'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

因此,当我现在使用rackup时,我收到此错误:

/home/username/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.5.2/lib/rack/handler.rb:76:in"require":无法加载此类文件 - 机架/处理程序/ puma(LoadError)

我用ruby 1.9.3p392(2013-02-22修订版39386)[i686-linux]

到目前为止我尝试过的

我的第一个想法是我忘了安装美洲狮,或者美洲狮在某种程度上被打破了.所以我尝试过:

puma -v
puma version 2.0.1
Run Code Online (Sandbox Code Playgroud)

我直接用ruby开始它:

ruby controller/main.rb 
Puma 2.0.1 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:4567
Run Code Online (Sandbox Code Playgroud)

我发现了这个美洲狮问题,但我找不到真正的解决方案.

最后我的问题

  1. 为什么要发生这种情况?

  2. 我怎样才能解决这个问题?

ruby sinatra rackup puma

7
推荐指数
1
解决办法
8321
查看次数

如何在Sinatra中运行自定义Rake任务?

*我希望在我的Sinatra应用程序中运行自定义Rake任务但我会继续rake aborted! Don't know how to build task 'greet'.

这是greet.rake用于测试目的的自定义Rake任务():

task :greet do
  puts "Hello!"
end
Run Code Online (Sandbox Code Playgroud)

我已经把greet.rake./lib/tasks(滑轨).我猜Rake无法找到该文件的正确目录.

如何在Sinatra中运行自定义Rake任务?

我正在使用Ruby 2.0.0和Sinatra 1.4.4.

UPDATE

Rakefile现在看起来像这样:

require "./app"
require "sinatra/activerecord/rake"
require "./lib/tasks"
Run Code Online (Sandbox Code Playgroud)

使用时:

rake greet
Run Code Online (Sandbox Code Playgroud)

我明白了:

rake aborted!
cannot load such file -- ./lib/tasks
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-        4.0.1/lib/active_support/dependencies.rb:229:in `block in require'
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-    4.0.1/lib/active_support/dependencies.rb:214:in `load_dependency'
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.1/lib/active_support/dependencies.rb:229:in `require'
/Users/*/Dropbox/Development/Sinatra/sinatra-mp-experiment/Rakefile:3:in `<top    (required)>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

ruby rake ruby-on-rails sinatra

7
推荐指数
1
解决办法
7523
查看次数

标签 统计

sinatra ×10

ruby ×9

heroku ×1

json ×1

less ×1

puma ×1

rackup ×1

rake ×1

rspec ×1

ruby-on-rails ×1

security ×1

thin ×1

xss ×1