标签: sinatra

如果我学习Sinatra或Padrino,那对Ruby on Rails有帮助吗?

如果我学习SinatraPadrino,那对Ruby on Rails有帮助吗?

我认为对于所有这些我需要更好地理解Ruby本身,但是(比方说)Padrino直接转换为我将在Ruby on Rails中使用的技能还是间接的?

我是一名PHP程序员,但是,由于我使用的是Ruby on Rails克隆的PHP框架,我发现它并不太难.

ruby ruby-on-rails sinatra padrino

3
推荐指数
2
解决办法
2746
查看次数

如何使用Sinatra和DataMapper解析json并将数据写入数据库

我在这里做了一个概念验证的事情,并且遇到了比我想象的更多的麻烦.这是我想要做的以及我目前是如何做的.

我发送我的Sinatra应用程序一个json文件,其中包含下面的简单消息.

[ 
        { 
        title: "A greeting!",
        message: "Hello from the Chairman of the Board" 
         }
]
Run Code Online (Sandbox Code Playgroud)

从那里我有一个帖子,我用它来获取参数并将它们写入sqlite数据库

post '/note' do

    data = JSON.parse(params) #<---EDIT - added, now gives error.

    @note = Note.new    :title => params[:title],
                          :message =>  params[:message],
                          :timestamp => (params[:timestamp] || Time.now) 
    @note.save
end
Run Code Online (Sandbox Code Playgroud)

当我发送消息时,时间戳和id被保存到数据库,但标题和消息是零.

我错过了什么?

谢谢

编辑:

现在,当我运行我的应用程序并将其发送给json文件时,我收到此错误:

C:/Users/Norm/ruby/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:在'block in start_thread'中TypeError:无法将Hash转换为String

编辑2:取得了一些成功.

我在文件调用test.json中有上面的json,这是json的发布方式.为了发布我使用HTTPClient的文件:

require 'httpclient'

HTTPClient.post 'http://localhost:4567/note', [ :file => File.new('.\test.json') ]
Run Code Online (Sandbox Code Playgroud)

在考虑了一些之后,我认为发布文件是问题所以我尝试以不同的方式发送它.下面的示例一旦我将我的帖子/注释句柄更改为:

data = JSON.parse(request.body.read)
Run Code Online (Sandbox Code Playgroud)

我的新send.rb

require 'net/http'

require 'rubygems'
require 'json'

@host = 'localhost'
@port …
Run Code Online (Sandbox Code Playgroud)

ruby json datamapper sinatra

3
推荐指数
1
解决办法
2万
查看次数

如何在rails hoster上轻松运行sinatra/padrino应用程序

是否有一种简单的方法来运行sinatra(特别是padrino)应用程序"作为"rails应用程序?我想,应该有一些方法可以将"rails服务器"转换为"padrino start"或者其他东西......(我指的是主机用mod_rails主机rails.)

ruby ruby-on-rails sinatra padrino

3
推荐指数
1
解决办法
2553
查看次数

sinatra put方法不起作用

嗨提交表单'put'方法用于将数据从表单发送到sinatra.the put方法在app.rb中定义put方法调用erb文件显示两个值.

但没有任何东西可以展示,有人可以帮忙.

put '/form' do

@name = params[:FirstName]
@last = params[:LastName]

erb :formact
end
Run Code Online (Sandbox Code Playgroud)

形成

<form name="biodata" action="form" method="put" onsubmit="validateForm()">
code
</form>
Run Code Online (Sandbox Code Playgroud)

谢谢

sinatra

3
推荐指数
1
解决办法
1482
查看次数

Sinatra应用程序找不到视图目录

我正在尝试创建一个模块化的sinatra应用程序,并需要我的每个子应用程序来查找views项目文件夹根目录下的目录.但它只查找子目录本身的视图目录而不是根目录.这是我的项目的样子:

??? config.ru
??? music_catalog
?   ??? app.rb
??? public
?   ??? css
?   ?   ??? site.css
?   ??? images
?       ??? content_top_bg.jpg
?       ??? demo_image_01.jpg
?       ??? god_save_http_it_aint_no_human_being.png
?       ??? header_bg.jpg
?       ??? home-showcase.png
?       ??? hover_link_bg.jpg
?       ??? its_little_its_blue_and_its_magical.jpeg
?       ??? linkbar_bg.jpg
?       ??? logo.png
?       ??? main_graphics.jpg
?       ??? placeholder.gif
?       ??? placeholder.jpg
?       ??? placeholder.png
?       ??? right_navbar_bg.jpg
?       ??? shadow_left.jpg
??? views
    ??? album.haml
    ??? genre.haml
    ??? index.haml
    ??? layout.haml
    ??? login.haml
    ??? …
Run Code Online (Sandbox Code Playgroud)

ruby views sinatra

3
推荐指数
1
解决办法
1356
查看次数

用于下载文件的Ruby Sinatra应用程序(作为流式传输)

我有一个sinatra应用程序,我想在其中进行下载功能.此下载从表中获取数据并为用户制作excel下载.

require 'csv'
get '/download' do 
     data = [{:name => "john", :age => 12, :state => 'ca'}, {:name => "tony", :age => 22, :state => 'va'}]

     # I want to download this data as excel file and the content of file should be as follows:
     # name,age,state
     # john,12,ca
     # tony,22,va
     # I don't want to save data as a temp file on the server and then throw to user for download 
     # rather I want to stream data for …
Run Code Online (Sandbox Code Playgroud)

ruby sinatra

3
推荐指数
1
解决办法
4125
查看次数

调试Sinatra应用程序

我安装pry并尝试使用它.

gem "pry"    

require 'pry'
#..........
binding.pry
Run Code Online (Sandbox Code Playgroud)

但有3个问题:

  • 我不知道去下一个字符串(不是下一个断点)或者看一个变量的值.目前没有信息吧!
  • 有很多不同的prys!pry-debug,pry,pry-db等等.我应该使用哪一个?
  • 它应该停在那里.但我还不知道(并没有找到)如何观察变量的值或如何进入下一行.它总是在几秒钟内给出一种错误:
pry(#)> Error: execution expired
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:600:in `getbyte'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:600:in `readline'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:600:in `block in readline'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:544:in `handle_read_errors'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:589:in `readline'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:369:in `retrieve_line'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:304:in `block in r'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:301:in `loop'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:301:in `r'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:271:in `re'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:251:in `rep'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:231:in `block (3 levels) in repl'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:230:in `loop'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:230:in `block (2 levels) in repl'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:229:in `catch'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:229:in `block in repl'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:228:in `catch'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_instance.rb:228:in `repl'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/pry_class.rb:154:in `start'
/var/lib/gems/1.9.1/gems/pry-0.9.10/lib/pry/core_extensions.rb:22:in `pry'
/home/alex/Documents/ruby/my_projects/controllers/my_controller.rb:24:in `block in '
/var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `call'
/var/lib/gems/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `block in …

ruby debugging rack sinatra

3
推荐指数
1
解决办法
3088
查看次数

无法加载此类文件 - app.rb(LoadError)

刚刚使用capistrano部署了一个ruby应用程序.我很确定我像往常一样做了一切.乘客虽然输出以下内容:

cannot load such file -- app.rb (LoadError)
  config.ru:1:in `require'
  config.ru:1:in `block in <main>'
  /home/deploy/apps/blog/shared/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
  /home/deploy/apps/blog/shared/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:108:in `eval'
  /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:108:in `preload_app'
  /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:153:in `<module:App>'
  /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /home/deploy/.rvm/gems/ruby-2.0.0-p353/gems/passenger-4.0.29/helper-scripts/rack-preloader.rb:28:in `<main>'

**Application root**

/home/deploy/apps/blog/current
Run Code Online (Sandbox Code Playgroud)

app.rb实际上在此目录中.

ruby passenger nginx sinatra

3
推荐指数
1
解决办法
2562
查看次数

Heroku部署错误H10"配置/app/config.ru未找到"

我正在将我的Sinatra应用程序部署到Heroku,当我到达时,heroku logs我看到以下跟踪:

State changed from crashed to starting
configuration /app/config.ru not found
State changed from starting to crashed
 at=error code=H10 desc="App crashed" method=GET path=/ host=... request_id=... status=503 bytes=
...heroku[router]: at=error code=H10 desc="App crashed" method=GET path=/favicon.ico host=... dyno= connect= service= status=503 bytes=
Starting process with command `bundle exec rackup config.ru -p 31614`
Process exited with status 1
Run Code Online (Sandbox Code Playgroud)

出了什么问题 - 是我的红宝石版本(ruby 1.9.3p484)......我真的不知道它会是什么.在localhost中一切都很好用.

ruby deployment heroku sinatra

3
推荐指数
1
解决办法
1255
查看次数

带有Puma的Sinatra在终端中输出两倍的输出

我已将Puma添加到我的sinatra应用程序中,现在我在终端中获得两行输出请求.我已经检查过它实际上并没有两次调用代码,我猜测也许Puma正在输出请求信息以及Sinatra.

作为演示,我创建了一个简单的应用程序如下:

的Gemfile

source 'https://rubygems.org'
ruby '2.2.0'

gem 'sinatra'
gem 'puma'
Run Code Online (Sandbox Code Playgroud)

config.ru

require 'sinatra'

get '/' do
  'Hello World'
end

run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)

这是我运行的命令:

rackup -s puma
Run Code Online (Sandbox Code Playgroud)

这是我浏览http:// localhost:9292 /时收到的输出类型

R5001755:test louis.sayers$ rackup -s puma
Puma 2.11.3 starting...
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://localhost:9292
::1 - - [03/Jul/2015:21:46:37 +1000] "GET / HTTP/1.1" 200 11 0.0074
::1 - - [03/Jul/2015:21:46:37 +1000] "GET / HTTP/1.1" 200 11 0.0222
Run Code Online (Sandbox Code Playgroud)

如果你想玩一个游戏,我已经将示例项目上传到了github

关于发生了什么的任何想法?谢谢你的帮助!

logging sinatra rackup puma

3
推荐指数
1
解决办法
1024
查看次数