如何将"11am"和"10pm"转换为"11:00"和"22:00"?有没有使用日期和时间类的简单方法?
我有一个机械化功能可以让我退出网站,但在非常罕见的情况下它会让我失望.该功能涉及转到特定页面,然后单击注销按钮.偶尔机械化在进入注销页面或单击注销按钮时会出现超时,代码崩溃.所以我进行了一次小规模的救援,它似乎正如第一段代码所示.
def logmeout(agent)
page = agent.get('http://www.example.com/')
agent.click(page.link_with(:text => /Log Out/i))
end
Run Code Online (Sandbox Code Playgroud)
Logmeout with rescue:
def logmeout(agent)
begin
page = agent.get('http://www.example.com/')
agent.click(page.link_with(:text => /Log Out/i))
rescue Timeout::Error
puts "Timeout!"
retry
end
end
Run Code Online (Sandbox Code Playgroud)
假设我正确地理解了救援,即使只是点击超时,它也会做两个动作,所以为了提高效率,我想知道我是否可以在这种情况下使用proc并传递代码块.会这样的工作:
def trythreetimes
tries = 0
begin
yield
rescue
tries += 1
puts "Trying again!"
retry if tries <= 3
end
end
def logmeout(agent)
trythreetimes {page = agent.get('http://www.example.com/')}
trythreetimes {agent.click(page.link_with(:text => /Log Out/i))}
end
Run Code Online (Sandbox Code Playgroud)
请注意,在我的trythreetimes函数中,我将其保留为通用救援,因此该功能将更具可重用性.
非常感谢任何人提供的任何帮助,我知道这里有几个不同的问题,但它们都是我想要学习的东西!
有一个宝石,它附加一个before_filter到Rails应用程序:
class Railtie < Rails::Railtie
initializer "..." do
ActiveSupport.on_load(:action_controller) do
ActionController::Base.send(:include, Filter)
...
module Filter
extend ActiveSupport::Concern
included do
append_before_filter :set_locale
end
def set_locale
....
Run Code Online (Sandbox Code Playgroud)
这里是应用程序中的一些控制器:
class DesktopsController < ApplicationController
before_filter :set_language_in_session
Run Code Online (Sandbox Code Playgroud)
现在问题在于,before_filter来自gems的是在before_filter来自DesktopsController 之前的过滤器链中:
DesktopsController._process_action_callbacks.select { |c| c.kind == :before }.collect { |filter| filter.filter }
=> [
[0] :set_locale,
[1] :set_language_in_session
]
Run Code Online (Sandbox Code Playgroud)
我怎样才能使before_filter从宝石(set_locale)放后所有其他过滤器?秘密可能在于这一行:
ActiveSupport.on_load(:action_controller) do
Run Code Online (Sandbox Code Playgroud)
但我尝试了不同的图书馆,没有任何运气......
顺便说一句.这是宝石的完整代码.Ruby 1.9.2,Rails 3.0.5.
我已经看过很多次了,从来没有真正停下来质疑它.现在让我想知道存根和存根之间是否存在差异!
在那儿?还是历史性的?存根!意味着它存在一次?并返回正常的方法调用?
我找到了很好的python细节自动完成功能

是否类似于Ruby on Rails的方法描述?
我正在使用ruby Scruffy gem来创建一些图形.它依赖于RMagick来渲染文本并创建png.当我运行我的ruby脚本时,我收到此错误.
sh: gs: command not found
sh: gs: command not found
/Users/natebird/.rvm/gems/ree-1.8.7-2011.03/gems/scruffy-0.2.6/lib/scruffy/rasterizers/rmagick_rasterizer.rb:15:in `from_blob': unable to read font `/usr/local/share/ghostscript/fonts/n019003l.pfb' @ error/annotate.c/RenderFreetype/1128: `(null)' (Magick::ImageMagickError)
from /Users/natebird/.rvm/gems/ree-1.8.7-2011.03/gems/scruffy-0.2.6/lib/scruffy/rasterizers/rmagick_rasterizer.rb:15:in `rasterize'
from /Users/natebird/.rvm/gems/ree-1.8.7-2011.03/gems/scruffy-0.2.6/lib/scruffy/graph.rb:164:in `render'
from autobench_grapher.rb:61:in `generate_graph'
from autobench_grapher.rb:30:in `run'
from autobench_grapher.rb:15:in `run'
from autobench_grapher.rb:91
Run Code Online (Sandbox Code Playgroud) 我创建了一个gem,其中包含来自bootstrap-sass和bootstrap本身的样式表和javascripts的供应商目录.
目录结构是bootstrap-sass-gem/vendor/assets/javascripts
和
引导 - 萨斯 - 宝石/供应商/资产/样式表
我在测试项目中需要gem,但每当我尝试从gem中获取某些东西时,我都会收到Sprockets::FileNotFound错误.
例如,在application.css中我添加了*= require bootstrap.bootstrap位于,bootstrap-sass-gem/vendor/assets/stylesheets/bootstrap.scss因此我的计算应该包含在资产管道中.
我正在运行RVM Ruby 1.9.2和Rails 3.1.
这是我的配置文件:
$:.push File.expand_path("../lib", __FILE__)
# Maintain your gem's version:
require "bootstrap-sass-gem/version"
# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
s.name = "bootstrap-sass-gem"
s.version = BootstrapSassGem::VERSION
s.authors = ["James Smith"]
s.email = ["James@smithware.co.uk"]
s.homepage = "http://www.smithware.co.uk"
s.summary = "The Bootstrap-sass project Gemified"
s.description = "Description of BootstrapSassGem."
s.files = Dir["{lib,vendor,rdoc}/**/*"] + Dir["*"]
#s.test_files = …Run Code Online (Sandbox Code Playgroud) 我通过MapReduce获取了一些id.我按照某些标准对这些ID进行了排序,现在我需要按照这个特定的顺序获取这些对象:
MyModel.find(ids)
Run Code Online (Sandbox Code Playgroud)
对?但它返回的对象不是存储ids的顺序.看起来像是一样的
MyModel.where(:_id.in => ids)
Run Code Online (Sandbox Code Playgroud)
它不会以与存储的id相同的顺序返回获取的对象.
现在我可以做到这一点
ids.map{|id| MyModel.find(id)}
Run Code Online (Sandbox Code Playgroud)
这将完成这项工作,但它会多次敲打数据库.
我现在正在为我的应用程序做布局,我想插入一个text.field,它只是为了看它的外观.我怎样才能做到这一点?
我想知道为什么编写File库的人决定制作参数来确定文件以字符串而不是符号打开的模式.
例如,现在就是这样:
f = File.new('file', 'rw')
Run Code Online (Sandbox Code Playgroud)
但这不是一个更好的设计
f = File.new('file', :rw)
Run Code Online (Sandbox Code Playgroud)
甚至
f = File.new(:file, :rw)
Run Code Online (Sandbox Code Playgroud)
例如?这似乎是使用它们的最佳位置,因为参数肯定不需要是可变的.
我有兴趣知道它为什么会这样出现.