diff --git a/examples/simple/redis_word_count_topology.rb b/examples/simple/redis_word_count_topology.rb
index 48edfc6..8753913 100644
--- a/examples/simple/redis_word_count_topology.rb
+++ b/examples/simple/redis_word_count_topology.rb
@@ -1,10 +1,12 @@
-require 'rubygems'
+require 'rubygems' # needed for remote cluster exec where TopolyLauncher require rubygems is not called
+require 'red_storm'
+require 'bundler/setup'
+
require 'redis'
require 'thread'
-require 'red_storm'
-
require 'examples/simple/word_count_bolt'
+
module RedStorm
module Examples
diff --git a/lib/red_storm.rb b/lib/red_storm.rb
index 06ab5b2..d070fd8 100644
--- a/lib/red_storm.rb
+++ b/lib/red_storm.rb
@@ -1,5 +1,21 @@
+
module RedStorm
- REDSTORM_HOME = File.expand_path(File.dirname(__FILE__) + '/..') unless defined?(REDSTORM_HOME)
+ LAUNCH_PATH = File.expand_path(File.dirname(__FILE__))
+ JAR_CONTEXT = !!(LAUNCH_PATH =~ /\.jar!$/)
+
+ if JAR_CONTEXT
+ REDSTORM_HOME = LAUNCH_PATH
+ TARGET_PATH = LAUNCH_PATH
+ BUNDLE_GEMFILE = "#{TARGET_PATH}/Gemfile"
+ BUNDLE_PATH = "#{TARGET_PATH}/bundler/#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}/"
+ GEM_PATH = "#{TARGET_PATH}/gems/"
+ else
+ REDSTORM_HOME = File.expand_path(LAUNCH_PATH + '/..')
+ TARGET_PATH = Dir.pwd
+ BUNDLE_GEMFILE = "#{TARGET_PATH}/Gemfile"
+ BUNDLE_PATH = "#{TARGET_PATH}/target/gems/bundler/#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}/"
+ GEM_PATH = "#{TARGET_PATH}/target/gems/gems"
+ end
end
require 'red_storm/version'
@@ -8,3 +24,18 @@ require 'red_storm/application'
require 'red_storm/simple_bolt'
require 'red_storm/simple_spout'
require 'red_storm/simple_topology'
+
+ENV['BUNDLE_GEMFILE'] = RedStorm::BUNDLE_GEMFILE
+ENV['BUNDLE_PATH'] = RedStorm::BUNDLE_PATH
+ENV["GEM_PATH"] = RedStorm::GEM_PATH
+ENV['BUNDLE_DISABLE_SHARED_GEMS'] = "1"
+
+# puts("************************ PWD=#{Dir.pwd}")
+# puts("************************ RedStorm::JAR_CONTEXT=#{RedStorm::JAR_CONTEXT}")
+# puts("************************ RedStorm::LAUNCH_PATH=#{RedStorm::LAUNCH_PATH}")
+# puts("************************ RedStorm::REDSTORM_HOME=#{RedStorm::REDSTORM_HOME}")
+# puts("************************ RedStorm::TARGET_PATH=#{RedStorm::TARGET_PATH}")
+# puts("************************ RedStorm::GEM_PATH=#{RedStorm::GEM_PATH}")
+# puts("************************ ENV['BUNDLE_GEMFILE']=#{ENV['BUNDLE_GEMFILE']}")
+# puts("************************ ENV['BUNDLE_PATH']=#{ENV['BUNDLE_PATH']}")
+# puts("************************ ENV['GEM_PATH']=#{ENV['GEM_PATH']}")
diff --git a/lib/red_storm/proxy/bolt.rb b/lib/red_storm/proxy/bolt.rb
index c739da6..0d7294c 100644
--- a/lib/red_storm/proxy/bolt.rb
+++ b/lib/red_storm/proxy/bolt.rb
@@ -10,6 +10,8 @@ java_import 'backtype.storm.tuple.Values'
java_import 'java.util.Map'
java_import 'org.apache.log4j.Logger'
+java_import 'org.apache.log4j.Logger'
+
java_package 'redstorm.proxy'
# the Bolt class is a proxy to the real bolt to avoid having to deal with all the
diff --git a/lib/red_storm/proxy/spout.rb b/lib/red_storm/proxy/spout.rb
index f84c2d0..75a6477 100644
--- a/lib/red_storm/proxy/spout.rb
+++ b/lib/red_storm/proxy/spout.rb
@@ -10,6 +10,8 @@ java_import 'backtype.storm.tuple.Values'
java_import 'java.util.Map'
java_import 'org.apache.log4j.Logger'
+java_import 'org.apache.log4j.Logger'
+
java_package 'redstorm.proxy'
# the Spout class is a proxy to the real spout to avoid having to deal with all the
diff --git a/lib/red_storm/simple_topology.rb b/lib/red_storm/simple_topology.rb
index b675a71..92e7365 100644
--- a/lib/red_storm/simple_topology.rb
+++ b/lib/red_storm/simple_topology.rb
@@ -80,6 +80,11 @@ module RedStorm
end
end
+ def self.log
+ @log ||= Logger.getLogger(self.name)
+ end
+
+
def self.spout(spout_class, options = {})
spout_options = {:id => self.underscore(spout_class), :parallelism => DEFAULT_SPOUT_PARALLELISM}.merge(options)
spout = SpoutDefinition.new(spout_class, spout_options[:id], spout_options[:parallelism])
diff --git a/lib/red_storm/version.rb b/lib/red_storm/version.rb
index 26b5dd3..426754d 100644
--- a/lib/red_storm/version.rb
+++ b/lib/red_storm/version.rb
@@ -1,3 +1,3 @@
module RedStorm
- VERSION = '0.4.0'
+ VERSION = '0.4.1'
end
\ No newline at end of file
diff --git a/lib/tasks/red_storm.rake b/lib/tasks/red_storm.rake
index 4b84f1e..dd64dda 100644
--- a/lib/tasks/red_storm.rake
+++ b/lib/tasks/red_storm.rake
@@ -46,6 +46,8 @@ task :setup do
ant.mkdir :dir => TARGET_CLASSES_DIR
ant.mkdir :dir => TARGET_SRC_DIR
ant.mkdir :dir => TARGET_GEMS_DIR
+ ant.mkdir :dir => "#{TARGET_GEMS_DIR}/gems"
+ ant.mkdir :dir => "#{TARGET_GEMS_DIR}/bundler"
ant.path :id => 'classpath' do
fileset :dir => TARGET_DEPENDENCY_DIR
fileset :dir => TARGET_CLASSES_DIR
@@ -68,6 +70,10 @@ task :devjar => [:unpack, :clean_jar] do
fileset :dir => RedStorm::REDSTORM_HOME do
include :name => "examples/**/*"
end
+ fileset :dir => RedStorm::REDSTORM_HOME do
+ include :name => "Gemfile"
+ include :name => "Gemfile.lock"
+ end
fileset :dir => JRUBY_SRC_DIR do
exclude :name => "tasks/**"
end
@@ -83,6 +89,10 @@ task :jar, [:dir] => [:unpack, :clean_jar] do |t, args|
fileset :dir => TARGET_CLASSES_DIR
fileset :dir => TARGET_DEPENDENCY_UNPACKED_DIR
fileset :dir => TARGET_GEMS_DIR
+ fileset :dir => CWD do
+ include :name => "Gemfile"
+ include :name => "Gemfile.lock"
+ end
fileset :dir => JRUBY_SRC_DIR do
exclude :name => "tasks/**"
end
diff --git a/pom.xml b/pom.xml
index a512a2f..bd86a5c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
redstorm
redstorm
0.4.0
- RedStorm JRuby on Storm
+ RedStorm
UTF-8
diff --git a/redstorm.gemspec b/redstorm.gemspec
index c3894cc..d850516 100644
--- a/redstorm.gemspec
+++ b/redstorm.gemspec
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
s.add_development_dependency "rubyforge"
- s.add_runtime_dependency "rake", ["~> 0.9.2"]
+ s.add_runtime_dependency "rake", ["~> 0.9.2.2"]
s.add_runtime_dependency "ruby-maven", ["~> 3.0.3.0.28.5"]
end