railsbros-thrift4rails 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt ADDED
@@ -0,0 +1,8 @@
1
+ == 0.0.1 2009-06-22
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
5
+ * created ThriftClient
6
+ * created first rake-tasks to generate thrift definitions
7
+ * Version 0.2.0
8
+ * ThriftClient catches the Thrift::ProtocolException now
data/Manifest.txt ADDED
@@ -0,0 +1,19 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ Rakefile
6
+ lib/thrift4rails.rb
7
+ lib/thrift4rails/tasks.rb
8
+ lib/thrift4rails/tasks/generate.rake
9
+ lib/thrift4rails/tasks/service.rake
10
+ lib/thrift4rails/tasks/tunnel.rake
11
+ lib/thrift4rails/thrift_client.rb
12
+ script/console
13
+ script/destroy
14
+ script/generate
15
+ tasks/Rakefile
16
+ tasks/thrift.rb
17
+ test/test_helper.rb
18
+ test/test_thrift4rails.rb
19
+ thrift4rails.gemspec
data/PostInstall.txt ADDED
@@ -0,0 +1,3 @@
1
+ Include
2
+ require 'thrift4rails/tasks/thrift'
3
+
data/README.rdoc ADDED
@@ -0,0 +1,48 @@
1
+ = thrift4rails
2
+
3
+ * http://github.com/#{github_username}/#{project_name}
4
+
5
+ == DESCRIPTION:
6
+
7
+ FIX (describe your package)
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ * FIX (list of features or problems)
12
+
13
+ == SYNOPSIS:
14
+
15
+ FIX (code sample of usage)
16
+
17
+ == REQUIREMENTS:
18
+
19
+ * FIX (list of requirements)
20
+
21
+ == INSTALL:
22
+
23
+ * FIX (sudo gem install, anything else)
24
+
25
+ == LICENSE:
26
+
27
+ (The MIT License)
28
+
29
+ Copyright (c) 2009 FIXME full name
30
+
31
+ Permission is hereby granted, free of charge, to any person obtaining
32
+ a copy of this software and associated documentation files (the
33
+ 'Software'), to deal in the Software without restriction, including
34
+ without limitation the rights to use, copy, modify, merge, publish,
35
+ distribute, sublicense, and/or sell copies of the Software, and to
36
+ permit persons to whom the Software is furnished to do so, subject to
37
+ the following conditions:
38
+
39
+ The above copyright notice and this permission notice shall be
40
+ included in all copies or substantial portions of the Software.
41
+
42
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
43
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
45
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
46
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
47
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
48
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,26 @@
1
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
2
+ %w[rake rake/clean fileutils newgem rubigen].each { |f| require f }
3
+ require File.dirname(__FILE__) + '/lib/thrift4rails'
4
+
5
+ # Generate all the Rake tasks
6
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
7
+ $hoe = Hoe.new('thrift4rails', Thrift4Rails::VERSION) do |p|
8
+ p.developer('pkw.de Development Team', 'dev@pkw.de')
9
+ p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
10
+ p.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
11
+ p.rubyforge_name = p.name # TODO this is default value
12
+ p.extra_deps = [
13
+ ['activesupport','>= 2.3.2'],
14
+ ]
15
+ p.extra_dev_deps = [
16
+ ['newgem', ">= #{::Newgem::VERSION}"]
17
+ ]
18
+
19
+ p.clean_globs |= %w[**/.DS_Store tmp *.log]
20
+ end
21
+
22
+ require 'newgem/tasks' # load /tasks/*.rake
23
+ Dir['tasks/**/*.rake'].each { |t| load t }
24
+
25
+ # TODO - want other tests/tasks run by default? Add them to the list
26
+ # task :default => [:spec, :features]
@@ -0,0 +1,9 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ require 'activesupport'
5
+ require 'thrift4rails/thrift_client'
6
+
7
+ module Thrift4Rails
8
+ VERSION = '0.2.0'
9
+ end
@@ -0,0 +1,21 @@
1
+ require "activesupport"
2
+
3
+ class Service
4
+ cattr_accessor :root_dir, :default_target, :dependencies, :dependencies_root, :port, :name, :tunnel_gateway
5
+ end
6
+
7
+ # define default values
8
+ Service.port = 4000
9
+ Service.dependencies = []
10
+ Service.dependencies_root = "../"
11
+ Service.default_target = "/app/thrift"
12
+
13
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].each { |ext| load ext }
14
+
15
+ def puts_red(out)
16
+ puts "\e[31m#{out}\e[0m"
17
+ end
18
+
19
+ def puts_green(out)
20
+ puts "\e[32m#{out}\e[0m"
21
+ end
@@ -0,0 +1,54 @@
1
+ namespace :thrift do
2
+
3
+ desc "Show configuration of service"
4
+ task :config do
5
+ puts "Service.root_dir: #{Service.root_dir}"
6
+ puts "Service.dependencies: #{Service.dependencies}"
7
+ puts "Service.dependencies_root: #{Service.dependencies_root}"
8
+ puts "Service.default_target: #{Service.default_target}"
9
+ puts "Service.port: #{Service.port}"
10
+ end
11
+
12
+ namespace :generate do
13
+
14
+ desc "Generate all service-definitions (own and dependent)"
15
+ task :all do
16
+ Rake::Task["thrift:generate:self"].invoke
17
+ Rake::Task["thrift:generate:dependencies"].invoke
18
+ end
19
+
20
+ desc "Generate own service-definitions"
21
+ task :self do
22
+ target = ENV["TARGET"] || ".#{Service.default_target}"
23
+ puts "Generating self..."
24
+ if File.exists?(File.join(Service.root_dir, "config/service_definition.thrift"))
25
+ puts " -> generating service-definitions: config/service_definition.thrift"
26
+ system "thrift --gen rb:rails -o #{target} #{File.join(Service.root_dir, "config/service_definition.thrift")}"
27
+ else
28
+ puts " -> no service-definitions"
29
+ end
30
+ if File.exists?(File.join(Service.root_dir, "config/service_includes.thrift"))
31
+ puts " -> generating service-includes: config/service_includes.thrift"
32
+ system "thrift --gen rb:rails -o #{target} #{File.join(Service.root_dir, "config/service_includes.thrift")}"
33
+ else
34
+ puts " -> no service-includes"
35
+ end
36
+ puts "...done"
37
+ end
38
+
39
+ desc "Generate all dependent service-definitions"
40
+ task :dependencies do
41
+ if Service.dependencies.blank?
42
+ puts "No dependencies defined"
43
+ else
44
+ puts "Generating dependencies..."
45
+ Service.dependencies.each do |dependency|
46
+ puts " -> generating dependency: #{dependency}"
47
+ system "cd #{File.join(Service.dependencies_root, dependency)} && rake thrift:generate:self TARGET=#{File.join(Service.root_dir, Service.default_target)}"
48
+ end
49
+ puts "...done"
50
+ end
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,8 @@
1
+ namespace :service do
2
+
3
+ desc "Start server of service on port #{Service.port}"
4
+ task :start do
5
+ system "script/server -p #{Service.port}"
6
+ end
7
+
8
+ end
@@ -0,0 +1,21 @@
1
+ namespace :tunnel do
2
+ desc "Establish tunnel through #{Service.tunnel_gateway} for #{Service.name}"
3
+ task :start do
4
+ system "ssh -L #{Service.port}:localhost:#{Service.port} #{Service.tunnel_gateway} -fN"
5
+ puts "started tunnel for #{Service.name}: ssh -L #{Service.port}:localhost:#{Service.port} #{Service.tunnel_gateway} -fN"
6
+ end
7
+ desc "Stop tunnel through #{Service.tunnel_gateway} for #{Service.name}"
8
+ task :stop do
9
+ system "ps -ef | grep \"ssh -L #{Service.port}:localhost:#{Service.port} #{Service.tunnel_gateway} -fN\" | grep -v \"grep\" | awk '{print $2}' | xargs kill -9"
10
+ puts "stopped tunnel for #{Service.name}: ssh -L #{Service.port}:localhost:#{Service.port} #{Service.tunnel_gateway} -fN"
11
+ end
12
+ desc "status of tunnel through #{Service.tunnel_gateway} for #{Service.name}"
13
+ task :status do
14
+ result = %x[ps -ef | grep \"ssh -L #{Service.port}:localhost:#{Service.port} #{Service.tunnel_gateway} -fN\" | grep -v \"grep\"]
15
+ unless result.blank?
16
+ puts_green "tunnel of #{Service.name} is established\n--> #{result}"
17
+ else
18
+ puts_red "tunnel of #{Service.name} not established"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,85 @@
1
+ # With this Thrif-Client you can easily connect to any thrift service. You just configure the endpoint ans
2
+ #
3
+ # == Example
4
+ # ThriftClient.new(
5
+ # :url => "http://127.0.0.1:3001/searvice_endpoint",
6
+ # :client_class => Thrift::Definitione::Generated::Client,
7
+ # :cache_methods => { :method_to_be_cached => 1.day }
8
+ # )
9
+ #
10
+ # == Throws
11
+ # In case of Errno::ECONNREFUSED raises "No connection to Provider: #{@url}. (Original Error: #{e.message})"
12
+ # In case of Errno::ETIMEDOUT raises "Connection to Provider '#{@url}' timed out. (Original Error: #{e.message})"
13
+ module Thrift4Rails
14
+ class ClientException < Exception; end
15
+ class ThriftClient
16
+ attr_accessor :url, :client_class, :transport, :protocol_factory
17
+
18
+ def initialize(options = {})
19
+ @url = options[:url]
20
+ @client_class = options[:client_class]
21
+ @cache_methods = options[:cache_methods] || {}
22
+ end
23
+
24
+ def protocol_factory
25
+ @protocol_factory || Thrift::BinaryProtocolAcceleratedFactory.new
26
+ end
27
+
28
+ def protocol_factory=(protocol_factory)
29
+ @protocol_factory = protocol_factory
30
+ end
31
+
32
+ def protocol
33
+ @protocol ||= self.protocol_factory.get_protocol(self.transport)
34
+ end
35
+
36
+ def client
37
+ @client ||= self.client_class.new(protocol)
38
+ end
39
+
40
+ def transport
41
+ @transport ||= Thrift::HTTPClientTransport.new(self.url)
42
+ end
43
+
44
+ def method_missing(meth, *args, &blk)
45
+ if client.respond_to?(meth)
46
+ self.class.send :define_method, meth do |*args|
47
+ if @cache_methods[meth] && args.blank?
48
+ Rails.cache.fetch("thrift_client_method_cache_#{meth}", :expire_in => @cache_methods[meth]) do
49
+ fetch_response(meth, *args)
50
+ end
51
+ else
52
+ fetch_response(meth, *args)
53
+ end
54
+ end
55
+ send(meth, *args, &blk)
56
+ else
57
+ super
58
+ end
59
+ end
60
+
61
+ private
62
+
63
+ def fetch_response(meth, *args)
64
+ begin
65
+ transport.open
66
+ response = client.send(meth, *args)
67
+ rescue Thrift::ProtocolException => e
68
+ client_exception = ClientException.new("Either no connection to Provider(#{@url}) or an internal thrift error occured. (Original Error: #{e.message})")
69
+ client_exception.set_backtrace(e.backtrace)
70
+ raise client_exception
71
+ rescue Errno::ECONNREFUSED => e
72
+ client_exception = ClientException.new("No connection to Provider: #{@url}. (Original Error: #{e.message})")
73
+ client_exception.set_backtrace(e.backtrace)
74
+ raise client_exception
75
+ rescue Errno::ETIMEDOUT => e
76
+ client_exception = ClientException.new("Connection to Provider '#{@url}' timed out. (Original Error: #{e.message})")
77
+ client_exception.set_backtrace(e.backtrace)
78
+ raise client_exception
79
+ ensure
80
+ transport.close
81
+ end
82
+ end
83
+
84
+ end
85
+ end
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/thrift4rails.rb'}"
9
+ puts "Loading thrift4rails gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
data/tasks/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require './thrift'
data/tasks/thrift.rb ADDED
@@ -0,0 +1,47 @@
1
+ require "activesupport"
2
+
3
+ class Service
4
+ cattr_accessor :root_dir, :default_target, :dependencies, :dependencies_root
5
+ end
6
+
7
+ Service.root_dir ||= File.join(File.dirname(__FILE__), "../../")
8
+ Service.dependencies ||= []
9
+ Service.dependencies_root ||= "../"
10
+ Service.default_target ||= "/app/thrift"
11
+
12
+ namespace :thrift do
13
+
14
+ desc "Show configuration of service"
15
+ task :config do
16
+ puts "Service.root_dir: #{Service.root_dir}"
17
+ puts "Service.dependencies: #{Service.dependencies}"
18
+ puts "Service.dependencies_root: #{Service.dependencies_root}"
19
+ puts "Service.default_target: #{Service.default_target}"
20
+ end
21
+
22
+ namespace :generate do
23
+
24
+ desc "Generate all service-definitions (own and dependent)"
25
+ task :all do
26
+ Rake::Task["thrift:generate:dependencies"].invoke
27
+ Rake::Task["thrift:generate:self"].invoke
28
+ end
29
+
30
+ desc "Generate own service-definitions"
31
+ task :self do
32
+ target = ENV["TARGET"] || ".#{Service.default_target}"
33
+ puts "generating self: thrift --gen rb:rails -o #{target} #{File.join(Service.root_dir, "config/service_definition.thrift")}"
34
+ system "thrift --gen rb:rails -o #{target} #{File.join(Service.root_dir, "config/service_definition.thrift")}"
35
+ system "thrift --gen rb:rails -o #{target} #{File.join(Service.root_dir, "config/service_includes.thrift")}" if File.exists?(File.join(Service.root_dir, "config/service_includes.thrift"))
36
+ end
37
+
38
+ desc "Generate all dependent service-definitions"
39
+ task :dependencies do
40
+ Service.dependencies.each do |dependency|
41
+ puts "cd #{File.join(Service.dependencies_root, dependency)} && rake thrift:generate:self TARGET=#{File.join(Service.root_dir, Service.default_target)}"
42
+ `cd #{File.join(Service.dependencies_root, dependency)} && rake thrift:generate:self TARGET=#{File.join(Service.root_dir, Service.default_target)}`
43
+ end
44
+ end
45
+
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ require 'stringio'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/thrift4rails'
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestThrift4Rails < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{thrift4rails}
5
+ s.version = "0.2.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["pkw.de Development Team"]
9
+ s.date = %q{2009-07-30}
10
+ s.description = %q{FIX (describe your package)}
11
+ s.email = ["dev@pkw.de"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc"]
13
+ s.files = ["History.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "lib/thrift4rails.rb", "lib/thrift4rails/tasks.rb", "lib/thrift4rails/tasks/generate.rake", "lib/thrift4rails/tasks/service.rake", "lib/thrift4rails/tasks/tunnel.rake", "lib/thrift4rails/thrift_client.rb", "script/console", "script/destroy", "script/generate", "tasks/Rakefile", "tasks/thrift.rb", "test/test_helper.rb", "test/test_thrift4rails.rb", "thrift4rails.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/#{github_username}/#{project_name}}
16
+ s.post_install_message = %q{PostInstall.txt}
17
+ s.rdoc_options = ["--main", "README.rdoc"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{thrift4rails}
20
+ s.rubygems_version = %q{1.3.1}
21
+ s.summary = %q{FIX (describe your package)}
22
+ s.test_files = ["test/test_helper.rb", "test/test_thrift4rails.rb"]
23
+
24
+ if s.respond_to? :specification_version then
25
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
+ s.specification_version = 2
27
+
28
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.2"])
30
+ s.add_development_dependency(%q<newgem>, [">= 1.4.1"])
31
+ s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
32
+ else
33
+ s.add_dependency(%q<activesupport>, [">= 2.3.2"])
34
+ s.add_dependency(%q<newgem>, [">= 1.4.1"])
35
+ s.add_dependency(%q<hoe>, [">= 1.8.0"])
36
+ end
37
+ else
38
+ s.add_dependency(%q<activesupport>, [">= 2.3.2"])
39
+ s.add_dependency(%q<newgem>, [">= 1.4.1"])
40
+ s.add_dependency(%q<hoe>, [">= 1.8.0"])
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: railsbros-thrift4rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - pkw.de Development Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-30 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: newgem
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.1
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.8.0
44
+ version:
45
+ description: FIX (describe your package)
46
+ email:
47
+ - dev@pkw.de
48
+ executables: []
49
+
50
+ extensions: []
51
+
52
+ extra_rdoc_files:
53
+ - History.txt
54
+ - Manifest.txt
55
+ - PostInstall.txt
56
+ - README.rdoc
57
+ files:
58
+ - History.txt
59
+ - Manifest.txt
60
+ - PostInstall.txt
61
+ - README.rdoc
62
+ - Rakefile
63
+ - lib/thrift4rails.rb
64
+ - lib/thrift4rails/tasks.rb
65
+ - lib/thrift4rails/tasks/generate.rake
66
+ - lib/thrift4rails/tasks/service.rake
67
+ - lib/thrift4rails/tasks/tunnel.rake
68
+ - lib/thrift4rails/thrift_client.rb
69
+ - script/console
70
+ - script/destroy
71
+ - script/generate
72
+ - tasks/Rakefile
73
+ - tasks/thrift.rb
74
+ - test/test_helper.rb
75
+ - test/test_thrift4rails.rb
76
+ - thrift4rails.gemspec
77
+ has_rdoc: true
78
+ homepage: http://github.com/#{github_username}/#{project_name}
79
+ licenses:
80
+ post_install_message: PostInstall.txt
81
+ rdoc_options:
82
+ - --main
83
+ - README.rdoc
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project: thrift4rails
101
+ rubygems_version: 1.3.5
102
+ signing_key:
103
+ specification_version: 2
104
+ summary: FIX (describe your package)
105
+ test_files:
106
+ - test/test_helper.rb
107
+ - test/test_thrift4rails.rb