如何在ruby Shoes GUI应用程序中创建简单的http请求?

我正在尝试向运行在localhost:3000的本地rails应用程序发出一个简单的http请求。 我的应用程序的代码非常处于原型阶段,因为我只是在尝试其他任何事情之前尝试获取原始function。 rails应用程序在解析之前只返回看起来像这样的JSON “{\”response\”:\”foo is blank\”}” 这是我正在尝试的代码: require ‘net/http’ def get_response return Net::HTTP.get(URI.parse(“http://localhost:3000”)) end Shoes.app(:width => 280, :height => 350) do flow do stack do button “make http request and display results in an alert box” do x = get_response alert x end# of button end# of stack end# of flow end 我也尝试将该方法放在Shoes.app块中无济于事。 执行时,这将创建它应该创建的所有元素,但是当我单击按钮时没有任何反应。 我知道你不应该用ruby鞋做任何实用的事,但我还是在尝试。 […]

使用块初始化对象

是否可以使用块初始化对象,如下所示? class Foo attr_reader :bar,:baz def initialize(bar,baz) @bar, @baz = bar, baz end end Foo.new do |bar, baz| # some logic to be implemented # @bar, @baz to be assigned end

我应该使用ON DELETE CASCADE,:dependent =>:destroy,还是两者都使用?

在Rails应用程序中,我在MySQL中有外键约束,我将它们全部手动设置,与我的迁移分开。 我试图找出是否应该使用ActiveRecord :dependent => :destroy选项。 例如,在我的架构中我有表… users —– log_entries ———– user_id # Has FK constraint to users.id with ON DELETE CASCADE 在我的模型中我可以…… class User :destroy end 我应该在模型上省略依赖选项并将其留给DB吗? 或者在那里拥有它是否很好? 删除此应用程序中的内容时,我不需要运行任何回调。 在所有情况下,只需删除它们即可。 另一个要考虑的因素是我的测试环境中不会出现FK约束,可能是因为rake db:test:prepare没有设置它们。 因此,如果我完全依赖MySQL级联删除,那么很难测试会发生什么。

为什么到处都有冻结常数?

我们可以从许多着名的存储库中轻松找到这种风格,如机架,导轨等。 例如在机架中 : PATH_INFO = ‘PATH_INFO’.freeze REQUEST_METHOD = ‘REQUEST_METHOD’.freeze SCRIPT_NAME = ‘SCRIPT_NAME’.freeze QUERY_STRING = ‘QUERY_STRING’.freeze CACHE_CONTROL = ‘Cache-Control’.freeze CONTENT_LENGTH = ‘Content-Length’.freeze CONTENT_TYPE = ‘Content-Type’.freeze rails中的另一个问题 : HTTP_IF_MODIFIED_SINCE = ‘HTTP_IF_MODIFIED_SINCE’.freeze HTTP_IF_NONE_MATCH = ‘HTTP_IF_NONE_MATCH’.freeze HTTP_IF_NONE_MATCH = ‘HTTP_IF_NONE_MATCH’.freeze 我想知道为什么这些常量字符串被冻结。 由于它们都是常量,因此应该只有一个实例。 当然,我们可以将”foo”.freeze放在某个地方来引用相同的单例实例,但是人们通常会编写像HTTP_IF_MODIFIED_SINCE这样的文字变量名。 所以在我看来,尽管使用了#freeze ,它没有任何区别,那么为什么人们会冻结常量呢?

转储YAML时如何强制使用双引号?

我有一个小脚本来自动化YAML文件中的一些东西。 我读取原始的YAML文件并将其转换为哈希值,然后在修改后将其转储到文件中: File.open(output_file, “w”) do |out| YAML.dump(modified_hash, out) end 这工作正常,但如果不需要它,它会删除字符串周围的双引号。 这是有效的YAML,但它看起来不太好。 我可以在每个字符串的末尾添加一个空格来强制单引号,但我对此并不满意。 有没有办法在字符串周围强制使用双引号?

如果宽度超过Graphics / Image Magick,如何调整图像大小

如下所示: http : //www.imagemagick.org/Usage/resize/#shrink选项: -resize 64×64> 仅在宽度和高度超过64像素时resize。 但是,如果有效,如何做这样的事情: -resize 64>x 要么 -resize 64x’ignores’> 换句话说,如果只有宽度超过这个大小。 这可能吗?

如果没有空白的“rescue”块,Ruby块/命令会无声地失败

假设我想要一个呼叫运行,如果它失败了,那没什么大不了的; 程序可以继续没有问题。 (我知道这通常是不好的做法,但想象一个假设的,快速的一次性脚本,而不是一个大项目) 我被教导这样做的方式是: begin thing_to_try rescue # awkward blank rescue block end next_thing 当然,还有其他方法可以做到这一点,包括使用ensure和类似的东西。 但有没有办法让方法调用/阻止静默失败而没有一个凌乱的空白块?

如何用Capybara关闭浏览器?

我有一种情况,当我使用(使用:selenium驱动程序)多个浏览器与Capybara测试我的前端。 如果不需要Capybara,如何使用Capybara关闭其中一些?

如何使validates_inclusion_of的错误消息显示允许的选项列表?

我有一个validates inclusion:在我的模型中,但我认为“未包含在列表中”的默认错误消息完全没有用。 如何让它在错误消息本身中显示允许的选项列表? (例如, “is not one of the allowed options (option 1, option 2, or option 3)” ? 更具体地说,获得以下测试的最优雅方法是: describe Person do describe ‘validation’ do describe ‘highest_degree’ do # Note: Uses matchers from shoulda gem it { should allow_value(‘High School’). for(:highest_degree) } it { should allow_value(‘Associates’). for(:highest_degree) } it { should allow_value(‘Bachelors’). for(:highest_degree) } […]

在类delcaration之后设置类inheritance或在const_set类上设置类inheritance

如果先前已经定义了一个类,我怎么能告诉它inheritance一个Parent类 例如: class Parent .. end class Klass .. end 现在我希望它inheritance自Parent 我无法重新打开课程并设置它,因为我会收到课程不匹配错误 class Klass < Parent .. end 具体来说,我试图找出如何在通过Object.const_set创建的类上设置类inheritance klass = Object.const_set(‘Klass’, Class.new) 如何告诉Klass从类Parentinheritance?