Articles of sinatra

Sinatra机架中间件劫持’/’根url

我正在尝试在我的Rails应用程序中使用Sinatra应用程序作为中间件。 我在Rails应用程序的/lib文件夹中测试了一个基本的Sinatra应用程序, use d中间件并设置路由。 这工作得很好。 我想要做的是提取Sinatra应用程序并将其作为gem包含在内。 这样我就可以独立运行Sinatra应用程序,或者在多个Rails应用程序中使用它。 Sinatra App # myrackapp/lib/myrackapp.rb module Myrackapp class Application < Sinatra::Base set :root, File.dirname(__FILE__) get "/" do "Rack Home" end get '/rackroute' do "Hello, Rack Page" end end end Myrackapp也有一个gemspec – 没有什么有趣的,但我可以发布,如果有必要的话。 Rails App # Gemfile gem ‘myrackapp’, path: “/Users/gareth/Code/myrackapp” – # config/application.rb module Myrailsapp class Application < Rails::Application […]

无法通过本地网络访问sinatra应用程序

我有rails应用程序。 如果我用rails s (端口3000)启动它,它可以在我的机器和本地网络上的每个设备上通过ip地址(在我的情况下为192.168.0.3)完美地工作。 我有sinatra申请。 如果我用ruby app.rb (端口4567)启动它,它在我的机器上运行完美,但它无法从本地网络上的其他设备访问。 两个应用程序都使用Thin作为应用服务器。 这与sinatra如何运作有关吗?

是否有针对Erlang的Sinatra风格的Web框架?

我在Ruby和Rails中编程了很长时间,然后我爱上了Sinatra框架的简单性,这使我能够构建一个页面的Web应用程序。 是否有适用于Erlang的Sinatra等Web框架? 我试过Erlyweb,但它似乎太重量级了。

Mount Sinatra应用程序位于rails应用程序内并共享布局

我想在我的rails应用程序中安装一个sinatra应用程序。 但我希望这个人分享相同的布局。 iframe可以工作,但你还有其他想法吗? 谢谢

如何从Sinatra中的特定页面重定向网页?

在Sinatra,如何从特定页面重定向网页? require ‘sinatra’ get “/A” do redirect ‘/B’ end get “/B” do # if comes from A # “IT COMES FROM A” # else not from A # “NOT FROM A , REDIRECT TO C” # redirect ‘/C’ # end end 我想学习如何做到这一点? 我可以使用JavaScript或HTML来做我想做的事吗? 或者,必须在Sinatra完成? 我试过这个,但它保持为null, get “/B” do mypath = URI(request.referer || ”).path if mypath […]

Sinatra:使用bundle exec ruby​​ app.rb时未定义的方法’run’

我有模块化风格的sinatra应用程序,接近结尾的以下行,以便它可以独立运行: # … all code before this omitted run! if __FILE__ == $0 end # This is the end of the file 当我用ruby app.rb运行这个应用程序时,它工作正常,webrick启动。 但是,如果我使用bundle exec ruby app.rb运行它,我会收到此错误: >bundle exec ruby app.rb C:/Ruby200/lib/ruby/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1488:in `start_server’: undefined method `run’ for HTTP:Module (NoMethodError) from C:/Ruby200/lib/ruby/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1426:in `run!’ 是什么导致了这个错误?

在Sinatra的路线之间传递变量

我正在Sinatra网站上实现注册的smsvalidation,我得到了这个代码: post ‘/reg’ do phone = params[:phone].to_s code = Random.rand(1000..9999).to_s HTTParty.get(‘http://sms.ru/sms/send?api_id=’ + api_id + phone + ‘&text=’ + code) end 这将用户电话从发布请求中获取,而不是生成4位数代码,并通过获取请求向短信服务发送代码。 但是,页面没有重新加载,因为此时打开modal dialog,用户应该键入代码 。 打开模态的按钮同时使用以下代码通过Ajax发送post : $(document).ready(function(){ $(“#sendsms”).click(function(){ var phone = $(“#phone”).val(); $.ajax({ url: “/coop”, data: {“phone”: phone}, type: “post” }); }); }); 在客户端检查用户代码会很奇怪,这就是为什么我有这个行动路线: post ‘/coop/checkcode’ do usrcode = params[:code] if code == usrcode redirect […]

Sinatra:’/ route’中的NameError,未定义的局部变量或方法

我正在尝试为cms网站建立一个管理员后端。 这是我的应用程序的结构 ├── app.rb ├── Gemfile ├── models │ └── models.rb ├── routes │ └── routes.rb └── views ├── categories.erb ├── # … other view files app.rb require ‘sinatra’ require ‘data_mapper’ require ‘dm-core’ require ‘dm-migrations’ require ‘digest’ enable :sessions DataMapper.setup(:default, ‘mysql://username:password@localhost/database’) require ‘./models/models.rb’ require ‘./routes/routes.rb’ DataMapper.finalize models.rb class Category include DataMapper::Resource property :id, Serial property […]

如何在Sinatra应用程序(+ unicorn)中存储/访问/更新线程安全变量?

我想在我的sinatra应用程序中以线程安全的方式存储和更新Enum。 我用独角兽。 我尝试了以下方法: #!/usr/bin/ruby require ‘sinatra’ $locked = false $num = 0 class App < Sinatra::Base before do while $locked do end $locked = true end after do $locked = false end get "/wait" do sleep 10 $num += 1 erb :display end get "/winner" do $num += 1 erb :display end end 视图只显示$ num;) […]

Sinatra Logger的Web服务错误

我正在使用Sinatra 1.3 ,它是一个Sinatra::Application 。 我有一个获取Web服务的方法。 我想记录此服务何时成功以及它在后台运行时失败的原因(cron作业) def fetch_some_web_service begin #if successful log.info “Success” rescue SocketError => e log.info “Failed” end end 我似乎无法使用Sinatra logger instance 。 它为我生成错误,我假设它正在这样做,因为我正在登录一个方法,而不是在一个路径中? 使用Sinatra::Application捕获某些日志文件中的errors和success的最佳方法是什么