finatra 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{Project Generator for Finatra}
22
22
  gem.email = "signalstatic@gmail.com"
23
23
  gem.authors = ["twoism"]
24
- gem.executables = ["fin"]
24
+ gem.executables = ["finatra"]
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
27
27
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.9
1
+ 0.0.11
File without changes
@@ -5,14 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "finatra"
8
- s.version = "0.0.9"
8
+ s.version = "0.0.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["twoism"]
12
- s.date = "2012-05-22"
12
+ s.date = "2012-07-13"
13
13
  s.description = "Project Generator for Finatra"
14
14
  s.email = "signalstatic@gmail.com"
15
- s.executables = ["fin"]
15
+ s.executables = ["finatra"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
18
  "README.md"
@@ -27,15 +27,16 @@ Gem::Specification.new do |s|
27
27
  "README.md",
28
28
  "Rakefile",
29
29
  "VERSION",
30
- "bin/fin",
30
+ "bin/finatra",
31
31
  "finatra.gemspec",
32
32
  "lib/finatra.rb",
33
33
  "lib/templates/App.scala.tt",
34
+ "lib/templates/Spec.scala.tt",
34
35
  "lib/templates/project/Procfile.tt",
35
36
  "lib/templates/project/README.markdown",
36
37
  "lib/templates/project/pom.xml.tt",
37
38
  "lib/templates/project/public/dealwithit.gif",
38
- "lib/templates/project/templates/example.mustache",
39
+ "lib/templates/timeline.mustache.tt",
39
40
  "spec/finatra-gem_spec.rb",
40
41
  "spec/spec_helper.rb"
41
42
  ]
@@ -5,19 +5,21 @@ class Finatra < Thor
5
5
  include Thor::Actions
6
6
 
7
7
  def self.source_root
8
- File.expand_path(File.dirname(__FILE__))
8
+ File.expand_path(File.dirname(__FILE__))
9
9
  end
10
10
 
11
11
  desc "new <MyAppName>", "Create a new Finatra app"
12
12
  def new(name)
13
- @app_name = name.to_s.gsub(/[^a-zA-Z0-9]/,'')
14
- @dir_name = name.downcase.to_s.gsub(/[^a-zA-Z0-9]/,'')
13
+ @app_name = name.to_s.gsub(/[^a-zA-Z0-9]/,'')
14
+ @dir_name = name.downcase.to_s.gsub(/[^a-zA-Z0-9]/,'')
15
15
  @org_name = ask 'Org Name (com.<username>)' while @org_name.to_s.empty?
16
16
 
17
17
  log "Creating #{@app_name} in #{Dir.pwd}..."
18
18
 
19
19
  copy_project_files
20
20
  create_controller
21
+ create_controller_test
22
+ create_template
21
23
  end
22
24
 
23
25
  desc "console", "Starts a scala console"
@@ -35,6 +37,11 @@ class Finatra < Thor
35
37
  exec "mvn scala:run"
36
38
  end
37
39
 
40
+ desc "test", "Run the tests"
41
+ def test
42
+ exec "mvn test"
43
+ end
44
+
38
45
  desc "package", "Package a jar for your app"
39
46
  def package
40
47
  exec "mvn package"
@@ -50,10 +57,26 @@ class Finatra < Thor
50
57
  template "templates/App.scala.tt", "#{src_dir}/#{@app_name}.scala"
51
58
  end
52
59
 
60
+ def create_controller_test
61
+ template "templates/Spec.scala.tt", "#{test_dir}/#{@app_name}Spec.scala"
62
+ end
63
+
64
+ def create_template
65
+ template "templates/timeline.mustache.tt", "#{resource_dir}/timeline.mustache"
66
+ end
67
+
53
68
  def src_dir
54
69
  "#{@dir_name}/src/main/scala/#{@org_name.gsub('.','/')}/#{@dir_name}"
55
70
  end
56
71
 
72
+ def resource_dir
73
+ "#{@dir_name}/src/main/resources"
74
+ end
75
+
76
+ def test_dir
77
+ "#{@dir_name}/src/test/scala/#{@org_name.gsub('.','/')}/#{@dir_name}"
78
+ end
79
+
57
80
  def log(msg)
58
81
  puts "[finatra] :: #{msg}"
59
82
  end
@@ -1,24 +1,51 @@
1
1
  package <%= @org_name %>.<%= @dir_name %>
2
2
 
3
- import com.posterous.finatra.{FinatraApp, FinatraServer}
4
- import com.capotej.finatra_core.MultipartItem
3
+ import com.twitter.finatra.{Controller, FinatraServer, View}
4
+
5
+
6
+ case class Tweet(status:String)
7
+
8
+ class TimelineView(val tweets:List[Tweet]) extends View {
9
+ val template = "timeline.mustache"
10
+ }
5
11
 
6
12
  object App {
7
13
 
8
- class <%= @app_name %> extends FinatraApp {
14
+ class <%= @app_name %> extends Controller {
15
+
16
+ def tweets = List(new Tweet("hey!"), new Tweet("lol"))
17
+
18
+ get("/tweets.json") { request =>
19
+ render.json(tweets)
20
+ }
21
+
22
+ get("/tweets") { request =>
23
+ val tweetsView = new TimelineView(tweets)
24
+
25
+ render.view(tweetsView)
26
+ }
27
+
28
+ get("/status/:status") { request =>
29
+ val statusCode = request.params("status").toInt
30
+
31
+ render.nothing.status(statusCode)
32
+ }
33
+
34
+ get("/not_found") { request =>
35
+ render.nothing.notFound
36
+ }
9
37
 
10
- get("/") { request =>
11
- response(body="hey")
38
+ get("/headers") { request =>
39
+ render.nothing.header("X-GitSHA", "1ecd6b1")
12
40
  }
13
41
 
14
42
  }
15
43
 
16
44
  def main(args: Array[String]) {
17
- val port = util.Properties.envOrElse("PORT", "7070").toInt
18
45
  val app = new <%= @app_name %>
19
46
 
20
47
  FinatraServer.register(app)
21
- FinatraServer.start(port)
48
+ FinatraServer.start()
22
49
  }
23
50
 
24
51
  }
@@ -0,0 +1,39 @@
1
+ package <%= @org_name %>.<%= @dir_name %>.test
2
+
3
+ import com.twitter.finatra.test.SpecHelper
4
+ import <%= @org_name %>.<%= @dir_name %>.App
5
+
6
+ import org.junit.runner.RunWith
7
+ import org.scalatest.junit.JUnitRunner
8
+
9
+ @RunWith(classOf[JUnitRunner])
10
+ class AppSpec extends SpecHelper {
11
+
12
+ def app = { new App.<%= @app_name %> }
13
+
14
+ "GET /tweets.json" should "respond 200" in {
15
+ get("/tweets.json")
16
+ response.code should equal (200)
17
+ }
18
+
19
+ "GET /tweets" should "respond 200" in {
20
+ get("/tweets")
21
+ response.code should equal (200)
22
+ response.body should include ("lol")
23
+ }
24
+
25
+ "GET /status/401" should "respond 401" in {
26
+ get("/status/401")
27
+ response.code should equal (401)
28
+ }
29
+
30
+ "GET /not_found" should "respond 404" in {
31
+ get("/not_found")
32
+ response.code should equal (404)
33
+ }
34
+
35
+ "GET /headers" should "respond with headers" in {
36
+ get("/headers")
37
+ response.getHeader("X-GitSHA") should equal ("1ecd6b1")
38
+ }
39
+ }
@@ -1,13 +1,15 @@
1
- # Finatra HelloWorld
1
+ #Finatra#
2
2
 
3
- An example finatra app
3
+ ## Running the Server
4
4
 
5
- ## Install
5
+ ```finatra start```
6
6
 
7
- ```git clone git@github.com:capotej/finatra-helloworld.git```
7
+ ## Start a console
8
8
 
9
- ## Running
9
+ ```finatra console```
10
10
 
11
- ```mvn scala:run```
11
+ ## Running tests
12
+
13
+ ```finatra test```
12
14
 
13
15
  It'll be running on http://localhost:7070
@@ -14,11 +14,11 @@
14
14
  </license>
15
15
  </licenses>
16
16
 
17
- <properties>
17
+ <properties>
18
18
  <maven.compiler.source>1.5</maven.compiler.source>
19
19
  <maven.compiler.target>1.5</maven.compiler.target>
20
20
  <encoding>UTF-8</encoding>
21
- <scala.version>2.9.1</scala.version>
21
+ <scala.version>2.9.2</scala.version>
22
22
  </properties>
23
23
 
24
24
  <repositories>
@@ -41,11 +41,27 @@
41
41
  </pluginRepository>
42
42
  </pluginRepositories>
43
43
  <dependencies>
44
+
44
45
  <dependency>
45
- <groupId>com.posterous</groupId>
46
+ <groupId>com.twitter</groupId>
46
47
  <artifactId>finatra</artifactId>
47
- <version>4.0.4</version>
48
+ <version>0.1.7</version>
48
49
  </dependency>
50
+
51
+ <dependency>
52
+ <groupId>junit</groupId>
53
+ <artifactId>junit</artifactId>
54
+ <version>4.8.1</version>
55
+ <scope>test</scope>
56
+ </dependency>
57
+
58
+ <dependency>
59
+ <groupId>org.scalatest</groupId>
60
+ <artifactId>scalatest_${scala.version}</artifactId>
61
+ <version>1.7.2</version>
62
+ <scope>test</scope>
63
+ </dependency>
64
+
49
65
  </dependencies>
50
66
 
51
67
  <build>
@@ -65,6 +81,8 @@
65
81
  <!-- you could define other launcher -->
66
82
  </launchers>
67
83
  </configuration>
84
+
85
+
68
86
  <executions>
69
87
  <execution>
70
88
  <goals>
@@ -81,31 +99,19 @@
81
99
  </execution>
82
100
  </executions>
83
101
  </plugin>
84
- <plugin>
85
- <groupId>org.apache.maven.plugins</groupId>
86
- <artifactId>maven-dependency-plugin</artifactId>
87
- <version>2.4</version>
88
- <executions>
89
- <execution>
90
- <id>copy-dependencies</id>
91
- <phase>package</phase>
92
- <goals><goal>copy-dependencies</goal></goals>
93
- </execution>
94
- </executions>
95
- </plugin>
96
102
  <plugin>
97
103
  <groupId>org.apache.maven.plugins</groupId>
98
104
  <artifactId>maven-surefire-plugin</artifactId>
99
- <version>2.6</version>
105
+ <version>2.12</version>
100
106
  <configuration>
101
- <useFile>false</useFile>
102
- <disableXmlReport>true</disableXmlReport>
103
- <!-- If you have classpath issue like NoDefClassError,... -->
104
- <!-- useManifestOnlyJar>false</useManifestOnlyJar -->
107
+ <useSystemClassLoader>false</useSystemClassLoader>
108
+ <argLine>-Xmx1024m</argLine>
105
109
  <includes>
106
- <include>**/*Test.*</include>
107
- <include>**/*Suite.*</include>
110
+ <include>**/*Spec.java</include>
108
111
  </includes>
112
+ <excludes>
113
+ <exclude>**/*Test.java</exclude>
114
+ </excludes>
109
115
  </configuration>
110
116
  </plugin>
111
117
  </plugins>
@@ -0,0 +1,5 @@
1
+ Tweets
2
+
3
+ {{#tweets}}
4
+ {{status}}</br>
5
+ {{/tweets}}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: finatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.11
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-22 00:00:00.000000000Z
12
+ date: 2012-07-13 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70113358860320 !ruby/object:Gem::Requirement
16
+ requirement: &70231312211700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70113358860320
24
+ version_requirements: *70231312211700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70113358859720 !ruby/object:Gem::Requirement
27
+ requirement: &70231312211180 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.8.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70113358859720
35
+ version_requirements: *70231312211180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &70113358859120 !ruby/object:Gem::Requirement
38
+ requirement: &70231312210700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70113358859120
46
+ version_requirements: *70231312210700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70113358858460 !ruby/object:Gem::Requirement
49
+ requirement: &70231312210200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70113358858460
57
+ version_requirements: *70231312210200
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &70113358857920 !ruby/object:Gem::Requirement
60
+ requirement: &70231312209720 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,11 +65,11 @@ dependencies:
65
65
  version: 1.8.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70113358857920
68
+ version_requirements: *70231312209720
69
69
  description: Project Generator for Finatra
70
70
  email: signalstatic@gmail.com
71
71
  executables:
72
- - fin
72
+ - finatra
73
73
  extensions: []
74
74
  extra_rdoc_files:
75
75
  - LICENSE.txt
@@ -84,15 +84,16 @@ files:
84
84
  - README.md
85
85
  - Rakefile
86
86
  - VERSION
87
- - bin/fin
87
+ - bin/finatra
88
88
  - finatra.gemspec
89
89
  - lib/finatra.rb
90
90
  - lib/templates/App.scala.tt
91
+ - lib/templates/Spec.scala.tt
91
92
  - lib/templates/project/Procfile.tt
92
93
  - lib/templates/project/README.markdown
93
94
  - lib/templates/project/pom.xml.tt
94
95
  - lib/templates/project/public/dealwithit.gif
95
- - lib/templates/project/templates/example.mustache
96
+ - lib/templates/timeline.mustache.tt
96
97
  - spec/finatra-gem_spec.rb
97
98
  - spec/spec_helper.rb
98
99
  homepage: http://github.com/twoism/finatra-gem
@@ -110,7 +111,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
111
  version: '0'
111
112
  segments:
112
113
  - 0
113
- hash: 545884740613486098
114
+ hash: 3840495853745466210
114
115
  required_rubygems_version: !ruby/object:Gem::Requirement
115
116
  none: false
116
117
  requirements: