Tag: sinatra

TypeError – 没有将nil隐式转换为String Sinatra

我的代码看起来像这样。它是在将字段提取到哈希后将json数据上传到数据库中。 但我在log_extractor.rb的JSON.parse(json_data)行中得到’TypeError – 没有将nil隐式转换为String’ upload_results.erb: $( “form” ).submit(function( event ){ var fileoutput = reader.result; //$(“#upload_button”).click(function(){ $.ajax({ url:’/file_upload’, type : “POST”, data: { fileoutputid: fileoutput }, dataType: ‘json’, success: function(response) { }, failure: function(response){ } }); }); server.rb post ‘/file_upload’ do file_data = params[:fileoutputid] @uploaderobj.fileUpload(file_data) end log_extractor.rb @data_hash = JSON.parse(json_data) @data_hash[‘test_results’].keys.length end

Sinatra启用:会话不适用于乘客/阿帕奇

我无法获得启用:会话持续存在于乘客/ apache上托管的简单Sinatra应用程序。 我将会话状态[:authorized]存储在cookie中。 它在Rack :: Handler :: Mongrel上托管时在本地工作,但我似乎无法在乘客上获得相同的行为。 我尝试了两种启用会话的方法,这两种方法都不适用于乘客/ apache安装启用:会话 和 使用Rack :: Session :: Pool,:domain =>’example.com’,:expire_after => 60 * 60 * 24 * 365 有关如何修复的任何想法?

CTRL + C不会停止sinatra应用程序

通常,当我在开发期间从控制台运行rails应用程序时,我只需按Ctrl + C即可退出。 然后我可以再次运行应用程序,从而弹出它并实现更改。 我正在运行一个sinatra应用程序。 我只是运行ruby文件。 $: ruby myapp.rb 但是,当我按Ctrl + C时,它不会停止应用程序。 我不得不调出Ubuntu系统监视器并终止Ruby进程。 很烦人。 有谁见过这个/之前处理过这个?

node-webkit相当于sinatra?

我一直在考虑学习如何基于网络技术制作简单的Mac OS X应用程序,我遇到了node-webkit这看起来很引人注目。 但是,我最近投入了学习Sinatra / Ruby的基础知识,我想继续学习这门课程。 对于使用Sinatra的开发人员,是否存在“node-webkit等效”? 或者,是否有推荐的方法使用Sinatra框架(或Ruby)来构建基本上是Web包装器的OS X应用程序?

我如何要求NumberHelper并使其工作?

我正在尝试编写一个简单的Sinatra,但我需要ActionBox中的ActionView :: Helpers :: NumberHelper。 http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html 问题是,我该如何安装和使用它? irb(main):001:0> require ‘action_view/helpers/number_helper’ irb(main):002:0> number_with_precision(1) NoMethodError: undefined method `number_with_precision’ for main:Object irb(main):004:0> ActionView::Helpers::NumberHelper.number_with_precision(1) NoMethodError: undefined method `number_with_precision’ for ActionView::Helpers::NumberHelper:Module 为什么这个简单的步骤不起作用? 而且,如果我需要所有废话: irb(main):001:0> require ‘action_pack’ irb(main):004:0> require ‘action_view’ irb(main):005:0> include ActionView::Helpers::NumberHelper irb(main):006:0> number_to_phone(12345) NoMethodError: undefined method `starts_with?’ for “12345”:String 如何理解这一切? 为什么这个模块不起作用? 为什么它不需要它需要什么? 它需要什么? starts_with在哪里? 谷歌对这些问题完全保持沉默。 UPD:现在我得到以下内容 number_with_precision(1, :locale => […]

解决Sinatra路线方法缺乏背景的问题

调用路由时,我遇到了丢失实例和nilClass错误的问题。 在源代码中钻研之后,似乎generate_method调用基本上使用初始方法的块创建了一个新方法。 get “/” do @some_local_instance.do_something() end 所以在上面的方法中,很可能在该类中有一个名为some_local_instance的局部变量,但是当实际评估死记硬背时,它没有关于方法定义位置的上下文,因此它将失败。 我问的原因是因为作为我的脚本的一部分,我有外部类,当加载Sinatra时加载哪些注册路由,当调用这些路由时,我需要访问这些类的一些局部变量。 一个例子是: class SomeRouteClass def initialize(sinatra, calculator) @calculator = calculator @sinatra = sinatra end def setup_routes @sinatra.get “/add” do return @calculator.add(1,1) end end end class Calculator def add(a,b) return a+b; end end sinatra = Sinatra.new calculator = Calculator.new routing_class = SomeRouteClass.new(sinatra, calculator) routing_class.setup_routes sinatra.run! 原谅任何拼写/语法错误这只是一个简单的例子,但正如你可以看到一个类注册路由以及当该路由被命中时返回一个由实例化它的计算器实例生成的值。 我遇到的问题是,在这个例子中,当我尝试运行/ add路由时,它告诉我@calculator是一个nilClass,我相信它是由Sinatra在没有上下文的情况下获取代码块的方式。 […]

HAML – 一个非常奇怪的缩进差异 – 错误?

这个HAML %script{:type => “text/javascript”} :plain $(document).ready(function() { bar(); var foo = foo_func(“#{}”); }); 正如预期的那样: $(document).ready(function() { bar(); var foo = foo_func(“”); }); 但这个ALMOST IDENTICAL HAML(仅更改bar()到prep() ): %script{:type => “text/javascript”} :plain $(document).ready(function() { prep(); var foo = foo_func(“#{}”); }); 给出这个: $(document).ready(function() { prep(); var foo = foo_func(“”); }); 注意第二种情况下的沮丧压痕 。 为什么将bar()更改为prep()会导致这种奇怪的差异?

如何在ActiveRecord中重用连接?

当我发现这个简单的API没有自动重用连接时,我正在玩Sinatra和ActiveRecord。 #!/usr/bin/env ruby require ‘sinatra’ require ‘active_record’ ActiveRecord::Base.establish_connection( adapter: ‘sqlite3’, database: ‘newsletter.db’ ) ActiveRecord::Schema.define do create_table :subscribers do |t| t.string :email t.timestamps end end class Subscriber < ActiveRecord::Base validates :email, presence: true end class Newsletter < Sinatra::Base set :server, :thin get '/subscribers/:email' do s = Subscriber.find_by_email(params[:email]) if s == nil status 404 else content_type 'application/json' […]

Sidekiq服务器没有加载配置文件

我正在尝试使用我的sinatra应用程序设置sidekiq,并且我无法启动sidekiq worker以使用配置文件在守护进程模式下运行。 我的项目有以下结构: project – config — sidekiq.yml #Sidekiq Config File – app — app.rb #Sinatra Application File – Rakefile – Gemfile – etc. 最终目标是创建一些rake任务来处理所有sidekiq任务。 现在,我只是想通过命令行让事情正常工作,然后我会通过rake让它工作。 sidekiq.yml # Sidekiq Configuration — development: logile: ./log/sidekiq_development.log verbose: true pidfile: ./tmp/pids/sidekiq.pid concurrency: 1 queues: – [household_import, 7] 当我在项目目录中运行此命令时: 捆绑exec sidekiq -C’./config/sidekiq.yml’-e’development’-d 我得到以下内容: You really should set a logfile […]

运行我的Sinatra应用程序时使用shotgun gem和msvcrt-ruby18.dll的错误

问候, 每当我对Sinatra应用程序进行更改时,我正在尝试刷新浏览器(位于http:// localhost:4567 / ),浏览器将刷新,控制台窗口似乎重新启动WEB brick服务器。 问题是浏览器窗口中的内容不会改变。 我的一个朋友告诉我这是一个霰弹枪问题并将我转介给rtomayko的霰弹枪gem: http://github.com/rtomayko/shotgun 在这个页面上,我读到了猎枪gem基本上可以解决我的问题,允许我的应用程序的更改在刷新后显示在浏览器窗口中。 所以我安装了霰弹枪gem。 安装成功。 要激活霰弹枪function,您必须在文件名前键入霰弹枪 。 在这种情况下,我的Sinatra应用程序的文件名是shortener.rb 当我输入shotgun shortener.rb来运行我的Sinatra应用程序时,我收到此错误: alt text http://lh6.ggpht.com/_83PkeFeVNNk/S-ymaYEgDUI/AAAAAAAAArE/rr7uJE3dRj4/shotgun_error.png 我还应该提一下,在测试霰弹枪方法以确定它是否有效之前,我安装了杂种(我意识到我应该检查一下,在执行此操作之前,猎枪是否有效,因为安装mongrel会使这个问题复杂化) 。 因此,除了获取上面的错误消息之外,我还从Ruby.exe获取此弹出窗口 alt text http://lh6.ggpht.com/_83PkeFeVNNk/S-ymaaWIZKI/AAAAAAAAArA/8qYCGUN8Wo4/msvcrt-ruby18.dll_error.png 我不知道msvcrt-ruby18.dll是什么,但我知道安装霰弹枪和/或mongrel会造成这个问题。 然后去哪儿? 谢谢,亚当