You are currently browsing the tag archive for the ‘Ruby’ tag.
When testing resque jobs, the simples solution is to set Resque.inline = true, which just executes the jobs imediatly, but if you want to make sure that they e.g. have been scheduled for the right time or simulate non-parallel execution, you might find these useful.
ResqueScheduler
module ResqueScheduler
def all_scheduled_jobs_count
total_jobs = Hash.new(0)
Array(redis.zrange(:delayed_queue_schedule, 0, -1)).each do |timestamp|
total_jobs[timestamp.to_i] += redis.llen("delayed:#{timestamp}").to_i
end
total_jobs
end
end
Resque
module Resque
def self.perform_enqueue_and_scheduled(queue)
while timestamp = Resque.next_delayed_timestamp
Resque::Scheduler.enqueue_delayed_items_for_timestamp(timestamp)
end
Resque.perform_all(queue)
end
def self.perform_all(queue_name)
until size(queue_name) == 0
reserve(queue_name).perform
end
end
end
Make your rspec output look more interesting!
(yes we had too much spare time at our hands…
)
# spec/spec_helper.rb
# encoding: UTF-8
if defined? RSpec::Core::Formatters::ProgressFormatter
RSpec::Core::Formatters::ProgressFormatter.class_eval do
DOTS = ['☘','⚘']
def example_passed(example)
output.print green(DOTS[rand(DOTS.size)])
end
end
end
If your environments/*.rb look like a repetitive mess, its time to get a config.yml!
- overview of your configuration
- dry code
- (optional) not check in all the passwords/keys of your app (only check in config.example.yml), great for open-source apps
- Can be loaded without loading the environment (e.g. small rake tasks)
# lib/cfg.rb
CFG = YAML.load(ERB.new(
File.read("config/config.yml")
).result)[Rails.env].with_indifferent_access
# config/application.rb
require "cfg"
# config/config.yml
common: &common
api:
airbrake_key: xxx
google_analytics_key: yyy
admin_email: admin@example.com
test:
<<: *common
host: 'localhost'
development:
<<: *common
host: 'localhost'
production:
<<: *common
host: 'fuu.bar'
# config/application.rb
config.action_mailer.default_url_options = {:host => CFG[:host]}
Lets say you are running something over VPN,
and VPN suddenly fails, then this will kill the app you dont want to connect via the normal interface.
Its just a small ruby script you can put into e.g. /usr/bin/
vpn-fuse VpnName 'killall secret-app'
vpn-fuse BankNetwork 'killall bank-client'
vpn-fuse iPredator 'killall transmission-gtk'
...
so far only tested on Ubuntu…
Problem:
Lots of stuff does not need any translation, so we simply leave it untranslated (e.g. firstname shows as Firstname). But this leaves ugly “missing translation” spans in out html.
Instead of entering senseless translations for everything thats missing, we simply deactivate the tooltips in production, while also avoiding raising/rescuing theses MissingTranslation errors to improve performance(rescue/raise is not cheap).
Code:
