rappa 0.0.1 → 0.0.2

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.
Files changed (2) hide show
  1. data/README.md +143 -3
  2. metadata +19 -3
data/README.md CHANGED
@@ -1,7 +1,147 @@
1
- rappa = Ruby Application Package Personal Assistant
1
+ # Package and deploy ruby rack based applications
2
2
 
3
- rappa -c config.yml
3
+ Rappa is a tool which lets you package your rack based application e.g. Sinatra, Rails etc for easy deployment to a ThunderCat container.
4
+ Visit the ThunderCat project to understand how this works.
4
5
 
6
+ ## Background
5
7
 
6
- What should it do?
8
+ Rappa is written in ruby and was created to simplify the package and deploy process of Sinatra and Rails apps. The idea is to have a single artifact
9
+ that is propagated through various environments and into a production environment via a deployment pipeline.
10
+
11
+ ## Install
12
+
13
+ gem install rappa
14
+
15
+ ## Config
16
+
17
+ The first thing you need is a rap.yml file which needs to live in the root of your project:
18
+
19
+ :name: My Awesome App
20
+ :version: 0.0.1
21
+ :description: This App rocks
22
+ :server_type: thin
23
+ :start_script: start.sh
24
+ :stop_script: stop.sh
25
+ :pids: tmp/pids
26
+ :bootstrap: bootstrap.sh
27
+
28
+ All fields are mandatory apart from the bootstrap field. All the fields are pretty self explanatory but here is a detailed breakdown:
29
+
30
+ * :name: - the name of the application
31
+ * :version: - the version of the application
32
+ * :description: - the description of the application
33
+ * :server_type: - the type of server - supported servers currently are: thin, unicorn, webrick
34
+ * :start_script: - the path relative to the root of your project which contains a script that starts your application
35
+ * :stop_script: - the path relative to the root of your project which contains a script that stops your application
36
+ * :pids: - the path relative to the root of your project that contains the pids generated when your application starts
37
+ * :bootstrap: - the path relative to the root of your project to a script that contains extra commands to run before starting
38
+
39
+ Rappa works by trying to start and stop your application via the start and stop scripts you provide. It also uses the pids to figure out if
40
+ your application is running or not. You can supply a script to run before start is called via the bootstrap field.
41
+
42
+ An example would be to have a thin project which uses Rake and has the following content:
43
+
44
+ ### Rakefile
45
+
46
+ require 'rake'
47
+
48
+ namespace :thin do
49
+
50
+ desc "Start The Application"
51
+ task :start do
52
+ puts "Starting The Application..."
53
+ system("thin start -e production -p 9991 -s 1 -d")
54
+ end
55
+
56
+ desc "Stop The Application"
57
+ task :stop do
58
+ puts "Stopping The Application..."
59
+ Dir.new(File.dirname(__FILE__) + '/tmp/pids').each do |file|
60
+ prefix = file.to_s
61
+ if prefix[0, 4] == 'thin'
62
+ str = "thin stop -P#{File.dirname(__FILE__)}/tmp/pids/#{file}"
63
+ puts "Stopping server on port #{file[/\d+/]}..."
64
+ system(str)
65
+ end
66
+ end
67
+ end
68
+ end
69
+
70
+ ### Start and Stop Scripts
71
+
72
+ ./start.sh
73
+
74
+ rake thin:start
75
+
76
+ ./stop.sh
77
+
78
+ rake thin:stop
79
+
80
+ ./config.ru
81
+
82
+ require File.dirname(__FILE__) + '/sinatra_app'
83
+ run Sinatra::Application
84
+
85
+ ./bootstrap.sh
86
+
87
+ echo "Inside the bootstrap"
88
+ bundle install
89
+ mkdir -p /some/dir/some/where
90
+ echo "Done with bootstrap"
91
+
92
+ (Recommended that you bundle package instead of putting a bundle install in the bootstrap.sh though)
93
+
94
+ ### Rap file
95
+
96
+ ./rap.yml
97
+
98
+ :name: My Awesome App
99
+ :version: 0.0.1
100
+ :description: This App rocks
101
+ :server_type: thin
102
+ :start_script: start.sh
103
+ :stop_script: stop.sh
104
+ :pids: tmp/pids
105
+ :bootstrap: bootstrap.sh
106
+
107
+ ## Usage
108
+
109
+ Once you have your rap.yml in the root of your project you must navigate one level up and you can perform the following things:
110
+
111
+ * package
112
+ * expand
113
+ * deploy
114
+
115
+ ### package
116
+
117
+ This packages your application. You need a rap.yml in the root of your project and must be executed from one level up from your application e.g.
118
+
119
+ rappa package -i path/to/your/app -o path/to/destination
120
+
121
+ The -i is for input directory and the -o is for output directory e.g.
122
+
123
+ rappa package -i ./myapp -o .
124
+
125
+ Will produce a myapp.rap in the current directory. The name of the folder of your application is what will be used in the rap archive.
126
+
127
+ ### expand
128
+
129
+ This expands an existing rap archive e.g.
130
+
131
+ rappa -a myapp.rap -d .
132
+
133
+ This will expand the myapp.rap into the current directory. (it will be inside a directory called myapp)
134
+
135
+ ### deploy
136
+
137
+ This deploys a rap archive to a thundercat server e.g.
138
+
139
+ rappa deploy -r myapp.rap -u http://thundercat/api/deploy -k your_api_key
140
+
141
+ -r is to specify your rap archive and -u is the url of the deploy api where your thundercat instance is running. -k is your api_key which is configured in your
142
+ thundercat server.
143
+
144
+ ## Develop
145
+
146
+ Interested in contributing? Great just let me know how you want to help.
7
147
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rappa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-14 00:00:00.000000000 Z
12
+ date: 2013-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rest-client
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
78
94
  description: ! 'Easy and simple way to package up your rack based application into
79
95
  a .rap (Ruby Application Package) for deployment to a web container that supports
80
96
  .rap such as ThunderCat.
@@ -96,7 +112,7 @@ licenses:
96
112
  post_install_message:
97
113
  rdoc_options: []
98
114
  require_paths:
99
- - src
115
+ - lib
100
116
  required_ruby_version: !ruby/object:Gem::Requirement
101
117
  none: false
102
118
  requirements: