Skip to content

Instantly share code, notes, and snippets.

@timdiggins
timdiggins / gist:294f0a37312fcbeaac70
Created Dec 18, 2014
delayedjob plugin to log backtraces
View gist:294f0a37312fcbeaac70
module Delayed
module Plugins
class LogErrors < Plugin
callbacks do |lifecycle|
lifecycle.around(:invoke_job) do |job, &block|
begin
block.call(job)
rescue Exception => error
Delayed::Worker.logger.error(error.message)
Delayed::Worker.logger.error(error.backtrace.join("\n"))
@timdiggins
timdiggins / delayedjob-bugsnag.rb
Last active Aug 29, 2015 — forked from loopj/delayedjob-bugsnag.rb
notify bugsnag when delayed job errors occur
View delayedjob-bugsnag.rb
# some references which helped
# http://blog.salsify.com/engineering/delayed-jobs-callbacks-and-hooks-in-rails
# http://stackoverflow.com/a/16639849/109175
# example plugin: https://github.com/collectiveidea/delayed_job/blob/master/lib/delayed/plugins/clear_locks.rb
module Delayed
module Plugins
class Bugsnag < Plugin
callbacks do |lifecycle|
lifecycle.around(:invoke_job) do |job, &block|
begin
@timdiggins
timdiggins / rake_testing_support.rb
Created Mar 20, 2015
testing rake in rspec (etc)
View rake_testing_support.rb
# ./spec/support/rake_testing_support.rb
def invoke_rake_task_in_test(task_name)
require 'rake'
Rails.application.load_tasks if Rake.application.tasks.count < 10
Rake::Task[task_name].reenable
Rake::Task[task_name].invoke
end
View ruby crashreport
Process: ruby [1079]
Path: /usr/bin/ruby
Identifier: ruby
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: zsh [327]
Date/Time: 2009-05-13 14:26:58.435 +0100
OS Version: Mac OS X 10.5.6 (9G55)
Report Version: 6
View crash report with nokogiri 1.2.4
Process: ruby [4332]
Path: /usr/bin/ruby
Identifier: ruby
Version: ??? (???)
Code Type: X86 (Native)
Parent Process: zsh [327]
Date/Time: 2009-05-15 11:15:29.213 +0100
OS Version: Mac OS X 10.5.6 (9G55)
Report Version: 6
@timdiggins
timdiggins / chef-roles-to-json-task.rb
Created Feb 19, 2011
rake task to convert existing ruby roles to json
View chef-roles-to-json-task.rb
# ADD this to Rakefile and run it by issuing rake roles.to_json
ROLE_DIR = File.expand_path(File.join(TOPDIR, "roles"))
namespace :roles do
desc "Convert ruby roles from ruby to json, creating/overwriting json files."
task :to_json do
Dir.glob(File.join(ROLE_DIR, '*.rb')) do |rb_file|
role = Chef::Role.new
role.from_file(rb_file)
json_file = rb_file.sub(/\.rb$/,'.json')
@timdiggins
timdiggins / search_for_chef_solo.rb
Created Mar 8, 2011
simplistic search implementation for chef solo
View search_for_chef_solo.rb
# better to use a monkeypatch - see https://gist.github.com/867960
@timdiggins
timdiggins / Vagrant_monkeypatch.rb
Created Mar 13, 2011
Vagrantfile monkeypatch of Vagrant's chef solo provisioner to allow databag folders
View Vagrant_monkeypatch.rb
CHEF_REPO = "../chef_repo" # path to chef repo,
# because Vagrantfile is normally in application repo, not in chef repo.
# see also https://gist.github.com/867960 for chef_solo patch
module Vagrant
module Provisioners
class ChefSolo
class Config
attr_accessor :data_bag_path
end
@timdiggins
timdiggins / chef_solo_patch.rb
Created Mar 13, 2011
Monkeypatch for chef solo to do basic data_bag manipulations
View chef_solo_patch.rb
# save this in the library folder of a cookbook
# (e.g. ./coookbooks/vagrant/library/chef_solo_patch.rb)
# see also https://gist.github.com/867958 for vagrant patch
# based on http://lists.opscode.com/sympa/arc/chef/2011-02/msg00000.html
if Chef::Config[:solo]
class Chef
module Mixin
module Language
def data_bag(bag)
View gist:901829
/usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/data_bag_item.rb:95:in `raw_data=': Data Bag Items must have an id key in the hash! {"evq"=>"https://api.opscode.com/organizations/ima_evq/data/apps/evq"} (Chef::Exceptions::ValidationFailed)
from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/data_bag_item.rb:147:in `from_hash'
from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/data_bag_item.rb:183:in `load'
from /var/chef/cache/cookbooks/django/libraries/app.rb:6:in `initialize'
from /var/chef/cache/cookbooks/django/definitions/install.rb:3:in `new'
from /var/chef/cache/cookbooks/django/definitions/install.rb:3:in `from_file'
from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/mixin/recipe_definition_dsl_core.rb:50:in `instance_eval'
from /usr/lib/ruby/gems/1.8/gems/chef-0.9.14/bin/../lib/chef/mixin/recipe_definition_dsl_core.rb:50:in `method_missing'
from /var/chef/cache/cookbooks/django/definitions/install.rb:42:in `from_file'
from /usr/lib/ruby/gems/1.8/gems/chef