我想在我的rails应用程序中安装sinatra应用程序.但我希望这个人分享相同的布局.
iframe可以工作,但你还有其他想法吗?
谢谢
我试图从Ruby(1.9.1p378)Sinatra(1.0)Rack(1.2.1)应用程序流文本数据(XML/JSON).建议的解决方案(例如,有没有办法将html刷新到Sinatra中的线路)似乎不起作用 - 当我产生某些无限流的元素(例如来自%w(foo bar).cycle)时,服务器就会阻塞.我试过webrick并thin作为服务器.
有关完成此任务的任何建议吗?我应该使用http://sinatra.rubyforge.org/api/classes/Sinatra/Streaming.html,如果是这样,我将如何在我的应用程序中使用它?
我正在尝试构建一个通过POST发送JSON(或XML)的rspec测试.但是,我似乎无法让它真正起作用:
json = {.... data ....}.to_json
post '/model1.json',json,{'CONTENT_TYPE'=>'application/json'}
Run Code Online (Sandbox Code Playgroud)
还有这个
json = {.... data ....}.to_json
post '/model1.json',json,{'Content-Type'=>'application/json'}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
我使用Sinatra和Haml编写了一个webform,用于调用Ruby脚本.
一切似乎都很好,除了一件事:我需要将参数传递给Sinatra/Ruby脚本中的Haml视图文件.
这是我的代码的一部分:
#!/usr/bin/env ruby
require 'rubygems'
require 'sinatra'
require 'haml'
get '/' do
haml :index
end
post '/' do
name = params[:name]
vlan = params[:vlan]
tmp = nil
tmp = %x[./wco-hosts.rb -a -n #{name} -v #{vlan}]
if tmp.include?("Error")
haml :fail
else
haml :success
end
end
Run Code Online (Sandbox Code Playgroud)
如果脚本遇到一个arror,它将返回一个包含单词"Error"的字符串.如果发生这种情况,我正在调用一个Haml文件,该文件将向用户显示错误页面.如果脚本没有遇到恐怖,它将返回一个成功页面.
我想在成功/失败页面中包含用户添加的新VM的名称.我的问题是我不知道如何在我的两个Haml文件中传递它.我搜索了一个解决方案,但没有找到任何东西.
我想将博客标签存储和更新到GAE中的数据存储区.当我运行该代码时,我收到此错误:
javax.servlet.ServletContext log: Application Error
/base/data/home/apps/yet-another-problem/1.334886515480009498/WEB-INF/gems/gems/sinatra-0.9.2/lib/sinatra/base.rb:45:in `each': undefined method `bytesize' for #<Hash:0x86684c> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
class Labels
class LabelData
include Bumble
ds :blog_element_labels
end
def update
response = URLFetch.get($label_url)
result = response.to_s
result_headless = result.gsub("listLabels(",'')
pure_result = result_headless.gsub(");",'')
json_to_yaml = YAML::load(pure_result)['entry']['category']
json_to_yaml.each do |label|
@label = LabelData.find(:blog_element_labels => label['term'])
@label = LabelData.create(:blog_element_labels => label['term']) if @label.nil?
end
end
end
Run Code Online (Sandbox Code Playgroud)
并由cron job运行'/ job'
get '/job' do
@labels = Labels.new
@labels.update
end
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?请教我.
但是当第一次运行cron作业时,标签数据被存储,甚至发生错误.无法更新数据.
是否有一些实用程序可用,以便我可以轻松地封装在对象中的请求中传递的表单字段,或者我是否必须通过解析每个请求中的params字段来自己创建它?
使用以下Sinatra应用程序
get '/app' do
content_type :json
{"params" => params}.to_json
end
Run Code Online (Sandbox Code Playgroud)
调用:
/app?param1=one¶m2=two¶m2=alt
给出以下结果:
{"params":{"param1":"one","param2":"alt"}}
Params只有两个键,param1和param2.
我理解Sinatra将params设置为哈希值,但它并不代表所有的URL请求.
在Sinatra中有没有办法获取请求中发送的所有URL参数的列表?
我知道很多人在使用Ruby编程webapps时会使用Sinatra,因为他们不希望他们的框架通过强制他们使用MVC而妨碍他们.
Python中有类似的东西吗?我正在寻找一个框架,它提供了Python和Web之间的粘合剂,而不是更多.我看过Web.py,但它似乎并不是我想要的.
编辑:请不要只是链接到随机框架,还要说明它们与其他框架的比较,以及它们具有哪些特殊功能.
我正在尝试使用"puts"来测试一些在Heroku上托管的Sinatra应用程序.有趣的是,输出似乎排队并且仅在重新启动Heroku dyno时显示.我试过'Thin'和'Webrick',但也有同样的问题.
有什么想法吗?
我是Sinatra的新手,我无法弄清楚应用程序布局的位置.
我见过使用的内联方法
# app code
__END__
@@layout
%html
= yield
Run Code Online (Sandbox Code Playgroud)
但我希望布局在它自己的.haml文件中.
布局文件应该命名为什么?它应该放在什么目录中?