diff --git a/.travis.yml b/.travis.yml
index dddf7601273e6555cbd6ec99274c48a76b644e6d..e483b5ff3ab597448facff290a5ea595d65856b3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,6 +6,30 @@ env:
   - BINDINGS=none
 matrix:
   include:
+    - compiler: gcc
+      language: ruby
+      rvm: ruby-1.9.3-p484
+      env: BINDINGS=ruby
+    - compiler: clang
+      language: ruby
+      rvm: ruby-1.9.3-p484
+      env: BINDINGS=ruby CC=clang
+    - compiler: gcc
+      language: ruby
+      rvm: ruby-2.0.0-p353
+      env: BINDINGS=ruby
+    - compiler: clang
+      language: ruby
+      rvm: ruby-2.0.0-p353
+      env: BINDINGS=ruby CC=clang
+    - compiler: gcc
+      language: ruby
+      rvm: ruby-2.1.0
+      env: BINDINGS=ruby
+    - compiler: clang
+      language: ruby
+      rvm: ruby-2.1.0
+      env: BINDINGS=ruby CC=clang
     - compiler: gcc
       language: python
       python: "2.7"
@@ -60,20 +84,6 @@ matrix:
     - compiler: clang
       language: dotnet
       env: BINDINGS=dotnet CC=clang
-    - compiler: gcc
-      language: ruby
-      rvm:
-        - ruby-1.9.3-p484
-        - ruby-2.0.0-p353
-        - ruby-2.1.0
-      env: BINDINGS=ruby
-    - compiler: clang
-      language: ruby
-      rvm:
-        - ruby-1.9.3-p484
-        - ruby-2.0.0-p353
-        - ruby-2.1.0
-      env: BINDINGS=ruby CC=clang
 before_install:
   - sudo apt-get update -qq
   - if [ "$BINDINGS" != "none" ]; then sudo apt-get install -qq swig; fi
diff --git a/src/bindings/ruby/Gemfile b/src/bindings/ruby/Gemfile
index df4281435fb46ad55a0f081e9ce583816586f2a5..c5029fc93d47c9d9ba5ecf8022cd547e7e99fb35 100644
--- a/src/bindings/ruby/Gemfile
+++ b/src/bindings/ruby/Gemfile
@@ -4,4 +4,5 @@ gemspec
 
 group :test do
   gem 'minitest', '~> 5.2'
+  gem 'rake', '>10'
 end
diff --git a/src/bindings/ruby/SConscript b/src/bindings/ruby/SConscript
index 290eb168e4f91a3eb55f4c40ced87dc73f4d5496..6d85a9329d033cf1d247163f6dd3d078fc08746c 100644
--- a/src/bindings/ruby/SConscript
+++ b/src/bindings/ruby/SConscript
@@ -9,11 +9,15 @@ rubysources = [
     "hammer-parser.gemspec",
     "Rakefile",
     "Gemfile",
-    "Gemfile.lock",
     "README.md",
 ]
 
 rubyenv = env.Clone()
+
+for k,v in os.environ.items():
+     if "RUBY" in k or "GEM" in k or "rvm" in k:
+         rubyenv['ENV'][k] = v
+
 rubyenv['ENV']['LD_LIBRARY_PATH'] = os.path.dirname(str(libhammer_shared[0]))
 rubyenv['RBDIR'] = os.path.dirname(str(rubyenv.File("Gemfile").path))
 
diff --git a/src/bindings/ruby/lib/hammer/parser.rb b/src/bindings/ruby/lib/hammer/parser.rb
index 3a11d2ec5121ccf90b7cd0f7b897e2df17279247..d1177c576e7ba811f1bc75d7001747b1fcb23481 100644
--- a/src/bindings/ruby/lib/hammer/parser.rb
+++ b/src/bindings/ruby/lib/hammer/parser.rb
@@ -113,8 +113,8 @@ module Hammer
 
     def self.marshal_ch_arg(num)
       if num.is_a?(String)
-        raise ArgumentError, "Expecting either a fixnum in 0..255 or a single-byte String" unless num.bytes.length == 1
-        num = num.bytes[0]
+        raise ArgumentError, "Expecting either a fixnum in 0..255 or a single-byte String" unless num.bytesize == 1
+        num = num.bytes.first
       end
       raise ArgumentError, 'Expecting a Fixnum in 0..255 or a single-byte String' unless num.is_a?(Fixnum) and num.between?(0, 255)
       return num