使用Cucumber与模块化Sinatra应用程序

我正在使用Sinatra构建一个中型应用程序,当我有一个app.rb文件并且我在Github上遵循Aslak的指导时,一切都很顺利: http://wiki.github.com/aslakhellesoy/cucumber/sinatra 随着应用程序变得更大并且app.rb文件开始膨胀,我使用Sinatra :: Base将很多位重构为“中间件”样式模块,使用机架文件映射事物(config.ru )等 该应用程序运行良好 – 但我的规格爆炸,因为没有更多的app.rb文件供webrat运行(如上面的链接中所定义)。 我试图找到如何处理这个问题的例子 – 我认为我只是不习惯Cuke的内部胆量,因为我找不到一种方法来覆盖所有应用程序。 我试着指向“config.ru”而不是app.rb – 但这不起作用。 我最终做的 – 完全是hackish – 是在我的支持目录中有一个单独的app.rb文件,它有所有需要的东西,所以我至少可以测试模型的东西。 我也可以在那里指定路线 – 但这根本不是我想做的。 所以 – 问题是:我怎样才能让Cucumber正确使用模块化应用程序方法?

浏览Ruby代码和Smalltalk?

什么是Smalltalk类层次浏览器最接近的等价物? 我已经看到了一些这样的解决方法,但似乎无法编写脚本。

实现单表inheritance后损坏的Rails路由

我已经为person类实现了单表inheritance class Person < ActiveRecord::Base end class Teacher < Person end class Student < Person end class Outsider < Person end 创建人员似乎根据form.select中选择的内容创建了Teacher,Student或Person,并添加了type属性。 但是,我似乎打破了路线 | 它们似乎指向teacher_path,student_path和outsider_path而不是person_path。 路线需要做哪些改变?

使用Ruby with Mechanize登录网站

我需要从网站上抓取数据,但首先需要登录。 我一直在使用hpricot成功地抓住其他网站,但我是新手使用机械化,我真的很困惑如何工作。 我看到这个例子通常被引用: require ‘rubygems’ require ‘mechanize’ a = Mechanize.new a.get(‘http://rubyforge.org/’) do |page| # Click the login link login_page = a.click(page.link_with(:text => /Log In/)) # Submit the login form my_page = login_page.form_with(:action => ‘/account/login.php’) do |f| f.form_loginname = ARGV[0] f.form_pw = ARGV[1] end.click_button my_page.links.each do |link| text = link.text.strip next unless text.length > 0 puts […]

使用带有序列化自定义类的Rails表单助手

我正在尝试在单个DB字段中保存选项的哈希值。 表单能够将数据保存到数据库,但是当我去编辑它时无法再次检索它(例如,除了wp_options字段之外,所有其他字段都是预先填充的)。 class Profile < ActiveRecord::Base serialize :wp_options end 这是我的自定义类: class WP_Options attr_accessor :wp_name, :wp_desc, :wp_limit end 在我的forms: true) do |f| %> … … 在我的控制器中: @profile = Profile.new(:wp_options => WP_Options.new) 在我的数据库列’wp_options’中: — !map:ActiveSupport::HashWithIndifferentAccess wp_name: Test 任何建议都会非常感激。

按值排序散列哈希(并返回散列,而不是数组)

我有以下哈希: user = { ‘user’ => { ‘title’ => {‘weight’ => 1, …. } ‘body’ => {‘weight’ => 4, ….} …. …. } } 有可能让用户按其子哈希的权重键排序吗? 我查看了Hash.sort,但它看起来像是返回数组而不是我原来的哈希排序。

如何在Ruby中返回一个整数的固定长度二进制表示?

我知道我可以使用Fixnum#to_s将整数表示为二进制格式的字符串。 但是1.to_s(2)产生1并且我希望它产生00000001 。 如何使所有返回的字符串都填充为8个字符的零? 我可以使用类似的东西: binary = “#{‘0’ * (8 – (1.to_s(2)).size)}#{1.to_s(2)}” if (1.to_s(2)).size < 8 但这似乎并不优雅。

如何在Rails中为我的控制器和模型提供方法?

我在我的Rails应用程序中有一个私有方法连接到Amazon S3,执行传递的代码块,然后关闭与S3的连接。 看起来像这样; def S3 AWS::S3::Base.establish_connection!( :access_key_id => ‘Not telling’, :secret_access_key => ‘Really not telling’ ) data = yield AWS::S3::Base.disconnect data end 它被称为这样(作为一个例子); send_data(S3 {AWS::S3::S3Object.value(“#{@upload_file.name}”,’bucket’)}, :filename => @upload_file.name) 我在我的控制器和模型中以多种方式调用此方法,因此将它作为私有方法包含在两个类中。 这很好用,我很满意,但它不是很干。 如何让我的模型和控制器都可以访问此方法,但只能让代码出现一次? 这是一个Ruby问题而不是Rails问题,反映了我对OOP的新见解。 我猜一个模块或混合就是答案,但到目前为止我还没有真正使用过这两个模块,需要一点点手握。 谢谢。

在Ruby中使用静态页面创建博客的最佳方式

我刚刚访问了Ruby工具箱上的静态网站生成 ,我不知道哪个列出的应用程序最适合一个小博客引擎。 基本上我需要: 包含1..5个内容缩短的最新文章的索引页面; 可以添加几个主页面和一个菜单来访问它们(breadcrumb可选); 显示文章 显示/搜索档案 评论系统 – Disqus好的 标签列表云 – 可选 外观和感觉通过布局 重要所有内容将以3种语言翻译! 我可以在我自己的服务器上托管,因此可以进行边处理。 更新: 首先,我将在github上尝试nanoc => blog的源代码

将实例变量初始化为数组 – Ruby

我正在尝试初始化和实例变量作为数组,如下所示: class Arch < ActiveRecord::Base attr_accessor :name1 def initialize @name1 = [] end def add_name1(t) @name1 << t end end 当我在控制台会话中尝试Arch.new时,我得到(Object不支持#inspect)。 这是怎么回事? 如何创建实例数组变量? 我试着像这样: class Arch < ActiveRecord::Base attr_accessor :name1 def after_initialize @name1 = [] end def add_name1(t) @name1 << t end end 而我的@ name1仍然是一个NilClass。 :/