我有以下代码
require 'rubygems'
require 'sinatra'
get '/' do
'Hello World!'
end
gem list sinatra
*** LOCAL GEMS ***
sinatra (1.0, 0.9.4)
ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
Run Code Online (Sandbox Code Playgroud)
错误
ruby myapp.rb
["==", "===", "=~", "__id__", "__send__", "class", "clone", "display", "dup", "enum_for", "eql?", "equal?", "extend", "freeze", "frozen?", "hash", "id", "include", "inspect", "instance_eval", "instance_exec", "instance_of?", "instance_variable_defined?", "instance_variable_get", "instance_variable_set", "instance_variables", "is_a?", "kind_of?", "method", "methods", "nil?", "object_id", "private", "private_methods", "protected_methods", "public", "public_methods", "respond_to?", "send", "singleton_methods", "taguri", "taguri=", "taint", "tainted?", "tap", "to_a", "to_enum", "to_s", …Run Code Online (Sandbox Code Playgroud) 我对ruby和Sinatra很新,我有一个基本问题:
我正在尝试构建的应用程序将使用Facebook作为在应用程序中验证用户身份的唯一方法.我想存储一个本地用户表,其中只包含facebook uid以及一些用户首选项.我看了几个允许我对facebook API进行身份验证的宝石,但是我不确定在我建立用户之后如何在我的应用程序中控制会话是有效的.我一直在使用考拉宝石与facebook交谈,我也看到过sinatra-session宝石用于运行会话方面的事情.
一旦用户使用他们的Facebook帐户登录,有人能指出我如何管理会话的正确方向吗?
我正在Sinatra中运行经典样式应用程序,我想获取应用程序绑定的URL.例如,如果我在开发环境中启动它,我希望得到:http://localhost:4567/在生产环境中,这将指向:http://example.com/
我知道可以从请求中检索它.但是,我需要在配置块中.怎么做?
我正在使用datamapper存储到数据库.迁移db后立即没有任何方法,因为没有值
<input type="text" name="seed" value="<%= @seed.value unless @seed.respond_to(value)? %>"
Run Code Online (Sandbox Code Playgroud) 试图设置capybara/rspec来测试一个简单的sinatra应用程序,但不断出现机架错误.
hello.rb的
require 'sinatra'
class App < Sinatra::Base
get "/" do
"hello hello!"
end
run! if app_file == $0
end
Run Code Online (Sandbox Code Playgroud)
投机/ hello_spec.rb
require File.join(File.dirname(__FILE__), '..', 'hello.rb')
require 'rspec'
require 'capybara'
require 'capybara/dsl'
require 'capybara/rspec'
set :environment, :test
describe 'The Hello App' do
include Capybara::DSL
def setup
Capybara.app = App
end
it "says hello when browsing /" do
visit '/'
page.should have_content('hello')
end
end
Run Code Online (Sandbox Code Playgroud)
注意,我也试过了
def setup
Capybara.app = App.new
end
Run Code Online (Sandbox Code Playgroud)
哪个产生了同样的错误.
错误:
C:\Sites\misc\qrgen>bundle exec rspec
F
Failures:
1) The Hello …Run Code Online (Sandbox Code Playgroud) 我有一个Ruby应用程序,它是一个Image Resizer.它使用RMagick gem来做到这一点.该应用程序要求用户上传文件,然后调整其大小并保存新生成的文件.
似乎Sinatra默认将所有上传的文件放入'uploads'目录,新生成的文件似乎也保存在那里.我假设这是默认行为,不知道如何改变这一点,但目前这不是一个直接问题(虽然如果你知道如何做到这一点,那也将受到赞赏).
现在,在正确生成文件后显示的'success.haml'页面中,我试图用一个简单的img标签显示新生成的图像.该文件的路径位于@filepath中,所以当我这样做时:
%img(src=@filepath)
Run Code Online (Sandbox Code Playgroud)
呈现的HTML(使用Firebug检查时)正确显示
<img src="uploads/filename.jpg">
Run Code Online (Sandbox Code Playgroud)
这个文件确实存在于我的文件夹结构中.但是,图像显得破碎.
关于如何克服这个问题的任何想法?
谢谢.
我正在使用twitter bootstrap.我想通过点击使用javascript的链接来显示模态.
$("#my-link-id").click($(this).modal());
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码会导致错误
Uncaught Error: HIERARCHY_REQUEST_ERR: DOM Exception 3
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我有以下路径:
http://192.168.56.10:4567/browse/foo/bar?x=100&y=200
Run Code Online (Sandbox Code Playgroud)
我绝对想要在字符串中"http://192.168.56.10:4567/browse/" 之后的所有内容.
使用splat不起作用(只捕获"foo/bar"):
get '/browse/*' do
Run Code Online (Sandbox Code Playgroud)
正则表达式也没有(也只捕获"foo/bar"):
get %r{/browse/(.*)} do
Run Code Online (Sandbox Code Playgroud)
在params哈希中可以访问x和y参数,但是对我想要的那些做一个.map似乎是不合理的和非ruby一样的(同样,这只是一个例子......我的参数实际上是非常动态和众多的) .有一个更好的方法吗?
更多信息:我的路径看起来是这样的,因为它正在与API通信,我使用该路由来确定我将进行的API调用.我需要字符串这样看.
将asset_sync与Rails应用程序一起使用时,我使用此行设置自定义标头
config.custom_headers = { '.*' => { cache_control: 'max-age=315576000', expires: 1.year.from_now.httpdate } }
Run Code Online (Sandbox Code Playgroud)
在Sinatra应用程序中执行相同的操作会为1:Fixnum'抛出一个'未定义的方法'年'.我可以使用什么,或者我如何指定1年后,年份方法可用作其红宝石代码,我认为它的'1'导致了问题
任何帮助赞赏
谢谢
我目前用于pm2管理节点进程。我遇到了需要运行Sinatra服务器的情况,但是我不知道如何保持它的生命。
是否有pm2等效的托管Ruby脚本或Sinatra应用程序?