redstorm 0.2.0 → 0.2.1

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/CHANGELOG.md CHANGED
@@ -10,3 +10,6 @@
10
10
  - examples using simple DSL
11
11
  - redstorm command usage syntax change
12
12
  - more doc in README
13
+
14
+ # 0.2.1, 11-23-2011
15
+ - gems support in production cluster
data/README.md CHANGED
@@ -1,12 +1,13 @@
1
- # RedStorm v0.2.0 - JRuby on Storm
1
+ # RedStorm v0.2.1 - JRuby on Storm
2
2
 
3
3
  RedStorm provides the JRuby integration for the [Storm][storm] distributed realtime computation system.
4
4
 
5
5
  ## Changes from 0.1.x
6
6
 
7
- - This release introduces the *simple* DSL. Topology, Spout and Bolt classes can inherit from the SimpleTopoloy, SimpleSpout and SimpleBolt classes which provides a very clean and consise DSL. See [examples/simple](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple).
8
- - Use the same SimpleTopology class for local development cluster or remote production cluster.
9
- - The `redstorm` command has a new syntax.
7
+ - this release introduces the *simple* DSL. Topology, Spout and Bolt classes can inherit from the SimpleTopology, SimpleSpout and SimpleBolt classes which provides a very clean and consise DSL. See [examples/simple](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple).
8
+ - use the same SimpleTopology class for local development cluster or remote production cluster.
9
+ - the `redstorm` command has a new syntax.
10
+ - gems support in production cluster
10
11
 
11
12
  ## Dependencies
12
13
 
@@ -27,7 +28,7 @@ $ gem install redstorm
27
28
 
28
29
  ### Initial setup
29
30
 
30
- Install RedStom dependencies; from your project root directory execute:
31
+ - install RedStom dependencies; from your project root directory execute:
31
32
 
32
33
  ``` sh
33
34
  $ redstorm install
@@ -37,9 +38,21 @@ The `install` command will install all Java jars dependencies using [ruby-maven]
37
38
 
38
39
  ***DON'T PANIC*** it's Maven. The first time you run `$ redstorm install` Maven will take a few minutes resolving dependencies and in the end will download and install the dependency jar files.
39
40
 
40
- ### Run in local mode
41
+ - create a topology class. The *underscore* topology_class_file_name.rb **MUST** correspond to its *CamelCase* class name.
42
+
43
+ ### Gems
44
+
45
+ Until this is better integrated, you can use **gems** in local mode and on a production cluster:
46
+
47
+ - **local mode**: simply install your gems the usual way, they will be picked up when run in local mode.
48
+
49
+ - **production cluster**: install your gem in the `target/gems` folder using:
41
50
 
42
- Create a topology class. The *underscore* topology_class_file_name.rb **MUST** correspond to its *CamelCase* class name.
51
+ ```sh
52
+ gem install <the gem> --install-dir target/gems/ --no-ri --no-rdoc
53
+ ```
54
+
55
+ ### Run in local mode
43
56
 
44
57
  ``` sh
45
58
  $ redstorm local <path/to/topology_class_file_name.rb>
@@ -81,7 +94,7 @@ $ redstorm local examples/simple/exclamation_topology2.rb
81
94
  $ redstorm local examples/simple/word_count_topology.rb
82
95
  ```
83
96
 
84
- This next example requires the use of the [Redis Gem](https://github.com/ezmobius/redis-rb) and a [Redis][redis] server runnig on `localhost:6379`
97
+ This next example requires the use of the [Redis Gem](https://github.com/ezmobius/redis-rb) and a [Redis][redis] server running on `localhost:6379`
85
98
 
86
99
  ``` sh
87
100
  $ redstorm local examples/simple/redis_word_count_topology.rb
@@ -105,6 +118,22 @@ $ redstorm jar examples
105
118
  $ storm jar ./target/cluster-topology.jar redstorm.TopologyLauncher cluster examples/simple/word_count_topology.rb
106
119
  ```
107
120
 
121
+ - to run `examples/simple/redis_word_count_topology.rb` you need a [Redis][redis] server running on `localhost:6379` and the Redis gem in `target/gems` using:
122
+
123
+ ```sh
124
+ gem install redis --install-dir target/gems/ --no-ri --no-rdoc
125
+ ```
126
+
127
+ - generate jar and submit:
128
+
129
+ ``` sh
130
+ $ redstorm jar examples
131
+ $ storm jar ./target/cluster-topology.jar redstorm.TopologyLauncher cluster examples/simple/redis_word_count_topology.rb
132
+ ```
133
+
134
+ - using `redis-cli`, push words into the `test` list and watch Storm pick them up
135
+
136
+
108
137
  Basically you must follow the [Storm instructions](https://github.com/nathanmarz/storm/wiki) to [setup a production cluster](https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster) and [submit your topology to the cluster](https://github.com/nathanmarz/storm/wiki/Running-topologies-on-a-production-cluster).
109
138
 
110
139
  ## DSL usage
@@ -430,6 +459,57 @@ end
430
459
  - [SplitSentenceBolt](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple/split_sentence_bolt.rb)
431
460
  - [WordCountBolt](https://github.com/colinsurprenant/redstorm/tree/master/examples/simple/word_count_bolt.rb)
432
461
 
462
+ ## Development
463
+
464
+ ### Requirements
465
+
466
+ - JRuby 1.6.5
467
+ - rake gem
468
+ - ruby-maven gem
469
+ - rspec gem
470
+
471
+ ### Contribute
472
+
473
+ Fork the project, create a branch and submit a pull request.
474
+
475
+ Some ways you can contribute:
476
+
477
+ - by reporting bugs using the issue tracker
478
+ - by suggesting new features using the issue tracker
479
+ - by writing or editing documentation
480
+ - by writing specs
481
+ - by writing code
482
+ - by refactoring code
483
+ - ...
484
+
485
+ ### Workflow
486
+
487
+ - fork project
488
+ - create branch
489
+ - install dependencies in `target/dependencies`
490
+
491
+ ```sh
492
+ $ rake deps
493
+ ```
494
+
495
+ - generate and build Java source into `target/classes`
496
+
497
+ ```sh
498
+ $ rake build
499
+ ```
500
+
501
+ - run topology in local dev cluster
502
+
503
+ ```sh
504
+ $ bin/redstorm local path/to/topology_class.rb
505
+ ```
506
+
507
+ - generate remote cluster topology jar into `target/cluster-topology.jar`, including the `examples/` directory.
508
+
509
+ ```sh
510
+ $ rake jar['examples']
511
+ ```
512
+
433
513
  ## Author
434
514
  Colin Surprenant, [@colinsurprenant][twitter], [colin.surprenant@needium.com][needium], [colin.surprenant@gmail.com][gmail], [http://github.com/colinsurprenant][github]
435
515
 
data/TODO.md ADDED
@@ -0,0 +1,4 @@
1
+ # TODO
2
+
3
+ - expose the log4j logger in Simple{Topology|Bolt|Spout} (Java::org.apache.log4j.Logger.getLogger(...))
4
+ - see if using bundler would provide better gems integration and easier jar packaging
@@ -1,3 +1,4 @@
1
+ require 'rubygems'
1
2
  require 'redis'
2
3
  require 'thread'
3
4
  require 'red_storm'
@@ -1,3 +1,3 @@
1
1
  module RedStorm
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
@@ -15,6 +15,7 @@ TARGET_SRC_DIR = "#{TARGET_DIR}/src"
15
15
  TARGET_CLASSES_DIR = "#{TARGET_DIR}/classes"
16
16
  TARGET_DEPENDENCY_DIR = "#{TARGET_DIR}/dependency"
17
17
  TARGET_DEPENDENCY_UNPACKED_DIR = "#{TARGET_DIR}/dependency-unpacked"
18
+ TARGET_GEMS_DIR = "#{TARGET_DIR}/gems"
18
19
  TARGET_CLUSTER_JAR = "#{TARGET_DIR}/cluster-topology.jar"
19
20
 
20
21
  JAVA_SRC_DIR = "#{RedStorm::REDSTORM_HOME}/src/main"
@@ -42,6 +43,7 @@ task :setup do
42
43
  ant.mkdir :dir => TARGET_DIR
43
44
  ant.mkdir :dir => TARGET_CLASSES_DIR
44
45
  ant.mkdir :dir => TARGET_SRC_DIR
46
+ ant.mkdir :dir => TARGET_GEMS_DIR
45
47
  ant.path :id => 'classpath' do
46
48
  fileset :dir => TARGET_DEPENDENCY_DIR
47
49
  fileset :dir => TARGET_CLASSES_DIR
@@ -60,6 +62,7 @@ task :devjar => [:unpack, :clean_jar] do
60
62
  ant.jar :destfile => TARGET_CLUSTER_JAR do
61
63
  fileset :dir => TARGET_CLASSES_DIR
62
64
  fileset :dir => TARGET_DEPENDENCY_UNPACKED_DIR
65
+ fileset :dir => TARGET_GEMS_DIR
63
66
  fileset :dir => RedStorm::REDSTORM_HOME do
64
67
  include :name => "examples/**/*"
65
68
  end
@@ -77,9 +80,7 @@ task :jar, [:dir] => [:unpack, :clean_jar] do |t, args|
77
80
  ant.jar :destfile => TARGET_CLUSTER_JAR do
78
81
  fileset :dir => TARGET_CLASSES_DIR
79
82
  fileset :dir => TARGET_DEPENDENCY_UNPACKED_DIR
80
- fileset :dir => RedStorm::REDSTORM_HOME do
81
- include :name => "examples/**/*"
82
- end
83
+ fileset :dir => TARGET_GEMS_DIR
83
84
  fileset :dir => JRUBY_SRC_DIR do
84
85
  exclude :name => "tasks/**"
85
86
  end
data/pom.xml CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <groupId>redstorm</groupId>
6
6
  <artifactId>redstorm</artifactId>
7
- <version>0.2.0</version>
7
+ <version>0.2.1</version>
8
8
  <name>RedStorm JRuby on Storm</name>
9
9
 
10
10
  <properties>
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: redstorm
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.0
5
+ version: 0.2.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Colin Surprenant
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-17 00:00:00 Z
13
+ date: 2011-11-23 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubyforge
@@ -90,6 +90,7 @@ files:
90
90
  - README.md
91
91
  - CHANGELOG.md
92
92
  - LICENSE.md
93
+ - TODO.md
93
94
  homepage: https://github.com/colinsurprenant/redstorm
94
95
  licenses: []
95
96