标签: sinatra

sinatra应用程序无法启动

我在Ubuntu 10.10/Ruby 1.9.2上

无论我做什么,我都无法在本地机器上启动sinatra应用程序.

hello.rb的:

require 'sinatra'
get '/' do
  "Hello World!"
end
Run Code Online (Sandbox Code Playgroud)

"$ ruby​​ hello.rb"和"$ ruby​​ -rubygems hello.rb"都会导致新的提示,不执行任何操作.

任何提示或指示?

ruby sinatra

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

如何在Sinatra中插入行结尾

我想知道如何在Sinatra中多行执行输出.例如.

get '/test' do
  array= ["one","two","three"]
  "#{array.each { |elem| elem}}"
end
Run Code Online (Sandbox Code Playgroud)

理想情况下会输出:

one
two
three
Run Code Online (Sandbox Code Playgroud)

onetwothree

我对Sinatra和Ruby相当新(第一天的学习)所以请为我的基本问题道歉(在任何地方都找不到答案)

ruby sinatra

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

Sinatra,在哪里放置要求声明

我正在开发一个Sinatra/Rack应用程序,我遇到了一个设计问题.我环顾四周,我不太确定在哪里放置大部分require陈述.

我认为他们进入了两个地方之一,要么是main.rb需要Sinatra本身,要么是他们进入,config.ru所以他们都在应用程序开始时加载.

我目前正倾向于main.rb所有测试应用程序所支持的内容.

谢谢您的帮助.

ruby sinatra

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

将动态内容"插入"现有静态站点的最佳方式

我的一个朋友有一个静态网站.她想添加一个允许人们注册课程的注册表.使用ROR或Wordpress等重新创建网站不在范围内.我们还希望用户使用相同的域,无论他或她是在查看静态页面还是动态页面.

我可以想到用CGI做这个最不具侵入性的方法,最好是使用Ruby.但是,我真的不喜欢编写CGI代码,而且我更喜欢使用Sinatra和ROR等框架.

在这种情况下,是否真的可以使用高级框架?如果是这样,那么它是否比它的价值更麻烦?

提前致谢!

ruby cgi ruby-on-rails sinatra

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

Sinatra CSS /图像问题

我有一个本地运行的sinatra应用程序,但是当我去添加样式时,我遇到了一个问题.我放置了CSS文件,public/css/style.css但没有提供.经过一些故障排除后我发现了Rack::Static中间件并解决了当时的问题,我添加的行config.ru是:

use Rack::Static, :urls => ["/css", "/images"], :root => "public"
Run Code Online (Sandbox Code Playgroud)

这让Rack 分别从public/css和提供css和图像public/images.当您在Haml中链接图像或样式时,您只需使用css/style.css并关闭公众.

我昨晚之后遇到的问题是,我在views目录中创建了一个小文件结构,以便更好地组织内容,所以现在当你访问/ contact/new路径时,它会使views/contacts/_form.hamlCSS无效.在页面上查看源确认Rack正在尝试提供CSS contacts/css/style.css而不是css/style.css正确显示主索引的正确路径.

我如何解决这个问题,以确保它始终从URL的根目录呈现,而不是基于当前正在呈现的视图的相对位置?我尝试过root => "#{File.dirname(__FILE__)/public",config.ru但没有帮助.

ruby rack sinatra

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

尊重HTML显示中从API响应返回的"\n"换行符(和特殊字符)

我通过API访问数据,该API以下列格式返回字符串:

你好这是一些文字.\n \n这里还有一些包含"引号"中的短语.\n \n另外一件事:\n \n*子弹点.\n*子弹点.\n*子弹点.\n*Fin.

这是一个sinatra应用程序,在我看来,我只是访问变量并显示如下:

<%= thing.description %>
Run Code Online (Sandbox Code Playgroud)

渲染时,实际上没有任何新行被尊重.它全部显示为单行.我不确定解决这个问题的正确方法.有没有办法\n<br>标签替换s ?或者是其他东西?

html javascript newline sinatra

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

如何使用WebMock在Sinatra应用程序中模拟Paperclip调用?

没有WebMock,此代码可以正常工作.

提出例外:

Paperclip::AdapterRegistry::NoHandlerError:
   No handler found for #<URI::HTTP:0x007ff3852cefb8 URL:http://www.example.com/images/foo.jpg>
# ./spec/support/api_mock.rb:34:in `process_image_for'
Run Code Online (Sandbox Code Playgroud)

测试:

let( :image_url  ) { 'http://www.example.com/images/foo.jpg'  }
...
stub_request(:post, image_url)
  .to_return(:status => 200, :body => File.read('spec/fixtures/image.jpg'), :headers => {})
...hit Sinatra app...
Run Code Online (Sandbox Code Playgroud)

api_mock.rb:

def self.process_image_for suggestion, params
  if params[:image]
    suggestion.image = URI.parse( params[:image] )  # line 34
    suggestion.save!
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby rspec paperclip sinatra webmock

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

使用RSpec测试HTTPS(SSL)请求的简单方法

我希望Rspec使用https请求root.这就是我目前拥有的:

it "requesting root (/) with HTTPS should return 200" do
  get "https://test.host/"
  last_response.should be_ok
end
Run Code Online (Sandbox Code Playgroud)

尝试在RSpec Rails测试HTTPS(SSL)请求中提出的解决方案会返回以下错误:

wrong number of arguments (0 for 1)
Run Code Online (Sandbox Code Playgroud)

我想我可以这样做:

get "/", :https => "on"
Run Code Online (Sandbox Code Playgroud)

有没有办法在不指定主机的情况下请求root用户?

ruby rspec sinatra

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

如何解决Heroku的config/database.yml文件中的错误"在此上下文中不允许映射值"

我正在向Heroku部署一个应用程序,但它很好,但是这个错误

mapping values are not allowed in this context at line 22 column 13 (Psych::SyntaxError)
Run Code Online (Sandbox Code Playgroud)

他们引用的行是heroku本身根据标准实践编写的database.yml文件的第22行.

跳转heroku run bash并查看相关文件:

<%

require 'cgi'
require 'uri'

begin
  uri = URI.parse(ENV["DATABASE_URL"])
rescue URI::InvalidURIError
  raise "Invalid DATABASE_URL"
end

raise "No RACK_ENV or RAILS_ENV found" unless ENV["RAILS_ENV"] || ENV["RACK_ENV"]

def attribute(name, value, force_string = false)
  if value
    value_string =
      if force_string
        '"' + value + '"'
      else
        value
      end
    "#{name}: #{value_string}"
  else
    ""
  end
end

adapter = uri.scheme
adapter = "postgresql" if adapter …
Run Code Online (Sandbox Code Playgroud)

ruby heroku sinatra psych heroku-postgres

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

main的未定义方法`it':Object(NoMethodError)

我的代码出了什么问题?它说当我试图进行测试时,我的"它"没有定义

shaunstanislaus @ Master~/workspace/sinatra_practice/crud(master)$ rspec app_test.rb /Users/shaunstanislaus/workspace/sinatra_practice/crud/app_test.rb:1:in'for <top (required)>': undefined methodmain:Object(NoMethodError)来自/ Users/shaunstanislaus /.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105 load' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in:来自/Users/shaunstanislaus/.rvm/gems/的load_spec_files中的块ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in each' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:inload_spec_files'from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/ rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in setup' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:inrun'from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/ lib/rspec/core/runner.rb:69:在run' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in调用'from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.7/exe/rspec:4:in <top (required)>' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/bin/rspec:23:inload 'from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/bin/rspec:23:in <main>' from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:ineval'from /Users/shaunstanislaus/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:在''

it "creates a new bookmark" do
  get "/bookmarks"
  bookmarks = JSON.parse
(last_response.body)
  last_size = bookmarks.size

  post "/bookmarks",
    {:url => "http://www.test.com", :title => "Test"}

  last_response.status.should == 201
  last_response.body.should match(/\/bookmarks\/\d+/)


  get "/bookmarks"
  bookmarks = JSON.parse …
Run Code Online (Sandbox Code Playgroud)

ruby rspec sinatra

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