我在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"都会导致新的提示,不执行任何操作.
任何提示或指示?
我想知道如何在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相当新(第一天的学习)所以请为我的基本问题道歉(在任何地方都找不到答案)
我正在开发一个Sinatra/Rack应用程序,我遇到了一个设计问题.我环顾四周,我不太确定在哪里放置大部分require陈述.
我认为他们进入了两个地方之一,要么是main.rb需要Sinatra本身,要么是他们进入,config.ru所以他们都在应用程序开始时加载.
我目前正倾向于main.rb所有测试应用程序所支持的内容.
谢谢您的帮助.
我的一个朋友有一个静态网站.她想添加一个允许人们注册课程的注册表.使用ROR或Wordpress等重新创建网站不在范围内.我们还希望用户使用相同的域,无论他或她是在查看静态页面还是动态页面.
我可以想到用CGI做这个最不具侵入性的方法,最好是使用Ruby.但是,我真的不喜欢编写CGI代码,而且我更喜欢使用Sinatra和ROR等框架.
在这种情况下,是否真的可以使用高级框架?如果是这样,那么它是否比它的价值更麻烦?
提前致谢!
我有一个本地运行的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但没有帮助.
我通过API访问数据,该API以下列格式返回字符串:
你好这是一些文字.\n \n这里还有一些包含"引号"中的短语.\n \n另外一件事:\n \n*子弹点.\n*子弹点.\n*子弹点.\n*Fin.
这是一个sinatra应用程序,在我看来,我只是访问变量并显示如下:
<%= thing.description %>
Run Code Online (Sandbox Code Playgroud)
渲染时,实际上没有任何新行被尊重.它全部显示为单行.我不确定解决这个问题的正确方法.有没有办法\n用<br>标签替换s ?或者是其他东西?
没有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) 我希望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用户?
我正在向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) 我的代码出了什么问题?它说当我试图进行测试时,我的"它"没有定义
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:1105load' 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:ineach' 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:insetup' 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)