Skip to content

Instantly share code, notes, and snippets.

View badosu's full-sized avatar

Amadeus Folego badosu

View GitHub Profile
@badosu
badosu / gist:1142264
Created August 12, 2011 15:16
.vimrc for integration with TFS
function! TFSetBin(binpath)
let g:tfvim_bin = a:binpath
endfunction
function! TFget(...)
let rec = 0
let all = 0
let prev = 0
let files = ""
for i in range(1, a:0)
#!/usr/bin/env ruby
require 'rubygems'
require 'termios'
require 'github_api'
puts 'Github login:'
user = gets.chomp
oldt = Termios.tcgetattr($stdin)
@badosu
badosu / gist:2593696
Created May 4, 2012 09:54
O Progresso (compilação da palestra do DHH na RailsConf 2012)

O Progresso

Compilação da palestra do DHH, na RailsConf, e lições que podem ser levadas para a área não técnica:

  • O progresso, enquanto conceito abstrato é agradável a todo mundo, mas as coisas não são tão bonitas quando isso é posto em prática
  • É claro que nem tudo que é novo é melhor, mas podemos medir objetivamente o progresso
  • Ser cético é legal, mas não migre do estado de constante curiosidade para constante suspeita
  • É uma reação natural sentir vontade de rejeitar mudanças porque sofremos com elas em determinados momentos, mas não podemos sobre-reagir a elas
  • O medo pode se instalar e nosso cérebro começa a mudar conforme o tempo, e "envelhecemos", viramos o liberal que se tornou conservador
#0 0x000000000060888a in rubinius::ObjectHeader::flags (this=0x0) at vm/oop.hpp:373
#1 0x0000000000608948 in rubinius::ObjectHeader::type_id (this=0x0) at vm/oop.hpp:630
#2 0x0000000000641c28 in rubinius::kind_of<rubinius::Array> (obj=0x0) at vm/gen/kind_of.hpp:16
#3 0x0000000000646833 in rubinius::MachineCode::interpreter (state=0x18868f0, mcode=0x1ec60e0, call_frame=0x7ffffffc6c30)
at vm/gen/instruction_implementations.hpp:748
#4 0x00000000007bc4ec in rubinius::BlockEnvironment::execute_interpreter (state=0x18868f0, previous=0x7ffffffc7d90,
env=0x7ffff665c3d0, args=..., invocation=...) at vm/builtin/block_environment.cpp:370
#5 0x00000000007bbed5 in rubinius::BlockEnvironment::invoke (state=0x18868f0, previous=0x7ffffffc7d90, env=0x7ffff665c3d0, args=...,
invocation=...) at vm/builtin/block_environment.cpp:103
#6 0x00000000007bc5c4 in rubinius::BlockEnvironment::call (this=0x7ffff665c3d0, state=0x18868f0, call_frame=0x7ffffffc7d90, args=...,
describe "taking |a, *b| arguments" do
it "raises an TypeError if #to_ary raises an error" do
obj = mock("block yield to_ary raising an error")
obj.should_receive(:to_ary).and_raise(StandardError)
lambda { @y.s(obj) { |a, *b| } }.should raise_error(TypeError)
end
❯ cat asd.rb rubinius/git/master !
require 'test/unit'
class TestFoo < Test::Unit::TestCase
def test_foo
obj1 = Object.new
obj2 = obj1.dup
def obj1.to_ary
raise
end
@@ -161,9 +165,18 @@ describe "A block" do
lambda { @y.s(obj) { |a, b| } }.should raise_error(TypeError)
end
+
+ it "raises an exception if #to_ary raises an exception" do
+ obj = mock("block yield to_ary raising an exception")
+ obj.should_receive(:to_ary).and_raise(ZeroDivisionError)
+
+ lambda { @y.s(obj) { |a, b| } }.should raise_error(ZeroDivisionError)
diff --git a/vm/builtin/block_environment.cpp b/vm/builtin/block_environment.cpp
index d603156..ba93f94 100644
--- a/vm/builtin/block_environment.cpp
+++ b/vm/builtin/block_environment.cpp
@@ -149,6 +149,13 @@ namespace rubinius {
if(!(ary = try_as<Array>(obj))) {
if(CBOOL(obj->respond_to(state, G(sym_to_ary), cFalse))) {
obj = obj->send(state, call_frame, G(sym_to_ary));
+ if(!obj) {
+ Exception* exc =
x = 10
def hi
frame = JRuby.runtime.current_context.frames(0)[1]
puts frame.send('binding').eval('x')
end
hi
# => 10
@badosu
badosu / stamps.rb
Last active December 30, 2015 20:08
class Stamps
attr_reader :amount
def initialize(amount)
if (amount =~ /^\d+$/).nil?
raise ArgumentError, "The amount should be an integer"
end
if amount.to_i < 8
raise ArgumentError, "The amount should be bigger than 7"