use Rack::Session::Pool
...
session[:msg]="Hello Rack" 编辑:单词会话似乎没有解决.我在我的config.ru中包含了会话池中间件,并尝试在ERB文件中设置一个变量(我正在使用Ruby Serve),并且它引发了“未定义的局部变量或方法”会话“” 谢谢! 会话是一些Web框架的一部分,例如 Sinatra和 Rails都有会话方法.平面机架应用
我正在写一个厨师食谱来安装我们的应用程序代码并执行它.该配方需要特别关于此代码最终的目录(运行模板,设置日志转发等).因此,目录本身在不同配方的很多地方弹出. 我试图获取/定义一个变量,所以我可以重新使用它在我的资源块与字符串插值.这很简单: home = node['etc']['passwd'][node['nodejs']['user']]['dir'] 以示例的用法来运行npm安装,同时告
我的sinatra应用程序必须解析一个〜60MB的 XML文件.这个文件几乎没有变化:在每天的cron工作中,它被另一个覆盖. 是否有技巧或方法来将解析的文件保存在内存中作为变量,以便我可以从传入的请求中读取它,但不必一次又一次地分析每个传入的请求? 一些伪代码来说明我的问题. get '/projects/:id'
return @nokigiri_object.search("//proj
我在同一命名空间下有两个Rake任务,如下所示: namespace :db do
task :first_task => :environment do
server_name='myserver'
connect_to(server_name)
end
task :second_task => :environment do
我试图利用 RubyMine快速文档和代码完成.我很高兴地发现它集成了YARD风格的评论: # @param [Numeric] width
# @param [Array<String>] values
# @return [Widget]
def foo(width, values) …这些注释对参数,返回类型,甚至类型集合都很有用.但是我找不到任何类似的例子或局部变量的标签,我确
我使用rails控制台,通常我需要预加载一些 ruby代码来处理. #file that i want to load in rails console
#my_file.rb
a = 1
b = 2
puts a + b 当我用./script/console运行我的控制台 rails-console :001 > load 'my_file.rb'
3
=> []
rails-consol
如何访问包含文件中定义的变量? # inc.rb
foo = "bar";
# main.rb
require 'inc.rb'
puts foo
# NameError: undefined local variable or method `foo' for main:Object 您无法访问其定义范围之外的本地 – 本例中的文件.如果您想要跨越文件边界的变量,那么除了本地之外,还要做任
我想将一个数组拆分为三个变量;将第一个值转换为一个变量,将第二个值转换为另一个变量,将所有其余值转换为一个字符串,例如: arr = ["a1","b2","c3","d4","e5","f6"]
var1 = arr[0] # var1 => "a1"
var2 = arr[1] # var2 => "b2"
var3 = ? # var3 should be => "c3d4e5f6" 为每个
我有一个类具有以下初始化方法. def initialize(my_var)
@my_var = my_var
end 我想测试然后对@my_var做一些事情的方法 def split
@my_var.split(",")
end 在测试它是否正确返回数组之前如何更改@my_var? 如果没有@my_var的访问器,这可能吗? 这听起来不像是一种正确的做法. Rspec应该测试类和模型的接
我似乎无法访问部分中的实例对象.例: 在控制器我有: ActiveAdmin.register Store do
sidebar "Aliases", :only => :edit do
@aliases = Alias.where("store_id = ?", params[:id])
render :partial => "store_aliases"
end
end
局部变量 begin
transaction #Code inside transaction
object = Class.new attributes
raise unless object.save!
end
rescue
puts object.error.full_messages # Why can't we use local varible ins
我是 Ruby的新手,想知道为什么我在这种情况下使用简单的Sinatra应用程序中的’mail’gem获得错误: post "/email/send" do
@recipient = params[:email]
Mail.deliver do
to @recipient # throws error as this is undefined
from 'server
class TestController < ApplicationController
def test
@goodbay = TestClass.varible
end
end
class TestClass
@@varible = "var"
end 我得到错误 undefined method 'varible' for TestClass:Class 在线@goo
我有一个Sinatra应用程序,它以只读或可编辑的方式提供页面,具体取决于用户是否已登录. 控制器设置变量@can_edit,视图使用该变量来隐藏/显示编辑链接.如何在测试中测试@ can_edit的值?我不知道如何在Rack :: Test下获取控制器的当前实例. 我使用class_eval来存根logged_in?控制器中的方法,但我不得不求助于检查last_response.body以查看我
当我们知道它的字符串名称时,是否有一种方法(元编程?)来读/写一个实例变量? 例如,我在类方法中使用了@my_var实例变量. 在这个过程中,我会想要一个字符串“my_var”来告诉我改变@my_var实例变量. 当然我可以使用“if”语句,但我希望它更具动态性,因为我的方法中可能有许多不同的实例变量. 我在考虑使用“my_var”.classify和其他东西…… 有人有线索吗? 谢谢你的帮助 使
我正在使用有点宝石,并希望能够访问我的帮助器方法中的有点API(由视图和邮件程序调用以生成URL). 我在ApplicationController中使用此方法启动API连接: (有没有更适合做BTW的地方?) class ApplicationController < ActionController::Base
before_filter :bitly_connect
def bit
在Rails集成测试中,如何设置会话变量(在我的情况下为:user_id)? 显然,它不是一个完整的集成测试,但鉴于在我的应用程序中用户身份验证不能在没有手动用户交互的情况下发生,我可以以某种方式解决并手动设置会话变量吗? 尝试了以下内容:“session”在该范围内不可用,open_session返回一个我没有找到更新方法的会话. 据我所知,你做不到.集成测试中的会话值 (在轨道3.2.2中)是
我编写的脚本在启动时运行并要求设置一个环境变量,但 Ruby的 Exceptions中最好的是哪一个?我使用LoadError,我只想尽可能描述并遵循适当的约定. 其次,除了检查它的长度之外,我找不到另一种方法来查看是否设置了环境变量,但这看起来并不那么优雅. begin
raise LoadError if ENV['FOO'].to_s.length == 0
system "open
给出以下两段代码: def hello(z)
"hello".gsub(/(o)/, &z)
end
z = proc {|m| p $1}
hello(z)
# prints: nil def hello
z = proc {|m| p $1}
"hello".gsub(/(o)/, &z)
end
hello
# prints: "o" 为什么这两段代码的输出不同?有没有办法从方法
所以我知道你可以通过调用#instance_variables来获取 Ruby中的所有实例变量,但是如果它们尚未设置,那么它们就不会显示出来. 例 class Walrus
attr_accessor :flippers, :tusks
end
w = Walrus.new
w.instance_variables # => []
w.tusks # => nil