当我在Sinatra尝试这样做时,
class Comment
include DataMapper::Resource
property :id, Serial
property :body, Text
property :created_at, DateTime
end
get '/show' do
comment = Comment.all
@comment.each do |comment|
"#{comment.body}"
end
end
它返回此错误,
ERROR: undefined method `bytesize' for #<Comment:0x13a2248>
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
谢谢,
您好,我正在尝试通过阅读Ruby编程语言书来提高我的ruby知识.在工作中阅读编码器我看到很多受访者建议深入研究项目源代码
我决定选择一个项目,因为我能找到更多自给自足.我的选择是Sinatra,因为它是1000 LOC.
这是一个很好的学习项目吗?你是否建议另一个更简单(即更少的LOC)?
我之前曾试图看过铁路机械,但我从它出来吓坏了.
我正在写一个带有haml和sass的sinatra应用程序.当我尝试使用位于我的views文件夹中的scss扩展名链接样式表时,我收到以下错误:/nav.css中的NoMethodError未定义方法`scss'
这是我的get方法
get '/nav.css' do
content_type 'text/css', :charset => 'utf-8'
scss :nav
end
Run Code Online (Sandbox Code Playgroud)
当我切换到较旧的sass语法时,我才能使用它.我还必须将nav.scss更改为nav.sass,将get方法更改为sass:nav
我也尝试过使用sass:nav with nav.scss和sass:nav with nav.sass但仍然是scss语法
我正在寻找一种可靠的方式来部署Rack应用程序(在本例中是一个Sinatra应用程序).请求将花费一点时间(0.25-0.5秒等待代理的HTTP请求)并且可能有相当数量的流量.
我应该使用传统的杂种群集设置吗?使用HAProxy作为负载均衡器?nginx的?架起来?
您使用了哪些解决方案?有哪些优势?
我正在建立一个网站,允许用户通过图形表示支持和反对特定问题的论据来理解辩论.(Wrangl)
我想对这些辩论进行分类,以便更容易找到并连接起来.我不想通过要求他们在看到任何好处之前添加标签和类别来激怒创建辩论的人,所以我正在寻找一种自动提取关键字的方法.
采用辩论的标题和描述(以及可能的论点内容,一旦有一些内容),提出一个很好的方法,例如,可以用作元数据的十个强有力的关键词,将类似的辩论连接在一起,甚至作为可以查看辩论的HTML页面头部中的"meta"关键字标签的内容.例如.Datamapper与ActiveRecord
该站点使用DataMapper进行数据存储,使用Sinatra在Ruby中编码.我理想地寻找可以在Heroku上运行的东西(我没有办法动态地将文件写入磁盘),我会考虑一个Web服务,一个API或者理想的Ruby宝石.
我正在开发一个Rails应用程序,它使用API后端来处理用Sinatra编写的AJAX请求.
API与Rails分开运行:
Rails: localhost:3000
API: localhost:9393
在生产中,我们将使用nginx代理对API的请求.
问题是我们在开发模式下没有nginx,我们使用的是瘦身.所以我需要某种Rack中间件,我可以在开发模式中添加它来代理我的请求.
有人能给我一个如何做到这一点的例子吗?
我遇到了sinatra 条件方法,并对它是如何工作感到困惑.
我有一段代码:
def auth user
condition do
redirect '/login' unless user_logged_in?
end
end
Run Code Online (Sandbox Code Playgroud)
其中检查用户是否记录了某些路由,示例路由:
get '/', :auth => :user do
erb :index
end
Run Code Online (Sandbox Code Playgroud)
该方法user_logged_in?在项目的lib目录中的辅助文件中定义:
def user_logged_in?
if session[:user]
@user = session[:user]
return @user
end
return nil
end
Run Code Online (Sandbox Code Playgroud)
所以,问题是:condition块是如何知道session[:user]包含什么的,在get '/'路径session[:user]上甚至没有设置?
该condition方法在以下GitHub页面中定义:sinatra基本条件方法
谢谢.
我正在尝试在Sinatra应用程序中使用子类化样式.所以,我有一个像这样的主要应用程序.
class MyApp < Sinatra::Base
get '/'
end
...
end
class AnotherRoute < MyApp
get '/another'
end
post '/another'
end
end
Run Code Online (Sandbox Code Playgroud)
run Rack::URLMap.new \
"/" => MyApp.new,
"/another" => AnotherRoute.new
Run Code Online (Sandbox Code Playgroud)
在config.ru我明白它只是为了"GET"如何关于其他资源(例如"PUT","POST")?我不确定我是否错过了一些明显的东西.而且,如果我有十个路径(/ path1,/ path2,...),我是否必须在config.ru中配置它们,即使它们在同一个类中?
我有Sinatra应用程序,需要测试我的应用程序.
功能/支持/ env.rb:
require_relative "../../application"
require "capybara"
require "capybara/cucumber"
require "rspec"
World do
Capybara.app = Application
include Capybara::DSL
include RSpec::Matchers
end
Run Code Online (Sandbox Code Playgroud)
功能/ one.feature:
Feature: Test homepage
In order to make sure people can open my site
I want to check it opened
Scenario: Opening first page
Given I have opened homepage
Then I should see site header
Run Code Online (Sandbox Code Playgroud)
测试一下:
cucumber features\one.feature
Run Code Online (Sandbox Code Playgroud)
结果:
Feature: Test homepage
In order to make sure people can open my site
I want to check it opened …Run Code Online (Sandbox Code Playgroud) (免责声明:在Heroku上部署Sinatra的新手.)
我见过http://www.sinatrarb.com/configuration.html,它告诉我set :environment, :production.我的问题是,如何指定它:"在Heroku中,将环境设置为生产,否则保持测试/开发."
此外,即使在放线之后set :environment, :production,我认为它不起作用,因为当我rackup在本地尝试应用程序时,它仍在运行(当我知道(或者我想我知道)它不应该因为我没有安装postgres在我的电脑上).
的Gemfile
group :production do
gem 'dm-postgres-adapter'
end
group :development, :test do
gem 'dm-sqlite-adapter', "~> 1.2.0"
end
Run Code Online (Sandbox Code Playgroud)