我正在使用Sinatra的DataMapper gem并遵循这里的教程:http://net.tutsplus.com/tutorials/ruby/ruby-for-newbies-working-with-datamapper/
我正在连接到数据库并进行以下迁移:
DataMapper.setup :default, "sqlite://#{Dir.pwd}/ex2.db"
DataMapper.auto_migrate!
Run Code Online (Sandbox Code Playgroud)
我的数据模型:
class User
include DataMapper::Resource
property :id , Serial
property :username , String
property :email , String
end
Run Code Online (Sandbox Code Playgroud)
我正在使用此命令执行:
rackup config.ru
Run Code Online (Sandbox Code Playgroud)
但是,当我到达这一行时:
User.create username: "JoeSchmo", email: "joe@schmo.com"
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Rack::Lint::LintError: Status must be >=100 seen as integer
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
我正在使用 Ruby 和 bit-struct 在测试设置中配置我的网络接口。这对于大多数 IOCTL 调用都适用,但我不知道如何调用 SIOCGIFCONF
这是一个例子:
如果我想获取接口的 MAC 地址,我会写这样的内容:
class LinuxIfreqMacAddr < BitStruct
char :name, 128
unsigned :type, 16, :endian => :native
hex_octets :macaddr, 48
pad :padding, 64
end
ifr = LinuxIfreqMacAddr.new
ifr.name = "eth0"
s.ioctl(SIOCGIFHWADDR, ifr) # s is a socket
puts ifr.macaddr
Run Code Online (Sandbox Code Playgroud)
这工作正常,并且会打印 eth0 的 MAC 地址。但是“struct ifconf”的签名(与 SIOCGIFCONF 一起使用)需要传递一个缓冲区。
这是签名:
struct ifconf {
int ifc_len;
char __user *ifcu_buf;
};
Run Code Online (Sandbox Code Playgroud)
如何从 ruby 调用具有 4096 字节缓冲区的 SIOCGIFCONF ioctl 命令?
我有以下Sinatra应用程序,我正在测试error
块,但它似乎没有工作.
这是我的sinatra应用程序:
require 'rubygems'
require 'sinatra'
error do
puts "----> Failed"
$stdout.print "----> Failed"
end
get "/*" do
raise "Error!!"
end
Run Code Online (Sandbox Code Playgroud)
我正在使用sinatra(1.3.3)
我正在研究Sinatra项目,并在会话中设置了一些变量供以后使用.
我需要帮助的场景是我想访问中间件类中的会话对象.我正在使用warden进行身份验证.
我想在Middleware类中做类似的事情:
class MyMiddleware
def initialize(app, options={})
@app = app
end
def call(env)
puts "#{session.inspect}"
end
end
Run Code Online (Sandbox Code Playgroud)
这样做有可能吗?
思考?
嗨希望有人可以帮助我,一直在努力解决这个问题已经有一段时间了.我在dev机器上运行Ubuntu 10,它上面有红宝石1.8,我移除了.我使用RVM和本教程安装了Ruby 1.9.3和rails3 http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/
ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]
Run Code Online (Sandbox Code Playgroud)
这似乎是正确的
我使用创建了一个新的测试应用
rails new mysite
Run Code Online (Sandbox Code Playgroud)
我成功创建了新的应用程序
cd mysite
Run Code Online (Sandbox Code Playgroud)
并创建了一个gemset
rvm gemset create 'rails3'
Run Code Online (Sandbox Code Playgroud)
然后我在/ mysite /文件夹中使用了这个
rvm use 1.9.3@rails3 --rvmr
Using /usr/local/rvm/gems/ruby-1.9.3-p125 with gemset rails3
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行它时会出现问题
root@server-pc:/var/www/mysite# rails s
-bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
EDIT1:
root@server-pc:/var/www/mysite# which ruby
/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby
Run Code Online (Sandbox Code Playgroud) 我的config.ru
情况如下:
use Rack::Static,
:urls => ["/images"],
:root => "public"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
Run Code Online (Sandbox Code Playgroud)
当我在本地加载它时,网站看起来很好,但是当我在Heroku上运行时,我在浏览器控制台中为CSS文件收到以下错误消息:
Resource interpreted as Stylesheet but transferred with MIME type text/html.
Run Code Online (Sandbox Code Playgroud)
知道我为什么会收到这些错误吗?
示例站点:http://salus8.heroku.com.
require 'sinatra'
require 'rubygems'
class TestServer < Sinatra::Application
set :port, 22340
get '/' do
"Hello World"
end
run! if app_file == $0
end
Run Code Online (Sandbox Code Playgroud)
Ruby 2.0.0-p0和Sinatra 1.4.2的非常简单的应用程序
当我按ctrl-c时webrick服务器在默认端口上重新启动...请参阅下面的输出
LM-BOS-00715009:server joshughes$ ruby test.rb
[2013-04-19 16:07:48] INFO WEBrick 1.3.1
[2013-04-19 16:07:48] INFO ruby 2.0.0 (2013-02-24) [x86_64-darwin11.4.2]
== Sinatra/1.4.2 has taken the stage on 22340 for development with backup from WEBrick
[2013-04-19 16:07:48] INFO WEBrick::HTTPServer#start: pid=63798 port=22340
^C
== Sinatra has ended his set (crowd applauds)
[2013-04-19 16:07:56] INFO going to shutdown ...
[2013-04-19 …
Run Code Online (Sandbox Code Playgroud) 我在使用Thin和Sinatra设置我的应用程序时遇到了问题.我创建了一个包含以下设置的development-config.ru文件:
# This is a rack configuration file to fire up the Sinatra application.
# This allows better control and configuration as we are using the modular
# approach here for controlling our application.
#
# Extend the Ruby load path with the root of the API and the lib folder
# so that we can automatically include all our own custom classes. This makes
# the requiring of files a bit cleaner and easier to maintain.
# This is …
Run Code Online (Sandbox Code Playgroud) 我在我的Rails 4 haml文件中有一个button_to调用,看起来像这样
= button_to("Click Me", action: "click", class: "btn btn-primary")
Run Code Online (Sandbox Code Playgroud)
但是,class: "btn btn-primary"
代码段无法正常工作,我的按钮不会更改.我也尝试过旧的Ruby语法:class => "btn btn-primary"
,但这似乎没有办法.
任何帮助将不胜感激.
考虑这个config.ru
文件:
require 'sinatra'
use Rack::Reloader, 0
get '/' do
'hi'
end
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
我从命令行启动它thin start
。hi
当我点击 时,应用程序会运行并显示localhost:3000
。如果我现在更改hi
为hello
,保存文件并重新加载页面,则不会出现更改:页面仍然显示hi
。
为什么Rack::Reloader
在这种情况下不起作用?我可以更改任何内容以使其正常工作吗?