pkgr 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +103 -37
- data/lib/pkgr/cli.rb +3 -3
- data/lib/pkgr/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -50,19 +50,28 @@ Ruby1.9 (+rubygems).
|
|
50
50
|
|
51
51
|
## What?
|
52
52
|
|
53
|
-
This gem will allow you to package your Rails3 application,
|
54
|
-
script for you, install a binary file to start your app/rake tasks/console,
|
55
|
-
put your configuration files in `/etc/app-name/`, setup a proper logrotate
|
56
|
-
file so that your log files don't eat all the disk space of your server, and a
|
57
|
-
few other things.
|
53
|
+
This gem will allow you to package your Rails3 application as a `.deb` package, and sets up a few things for you:
|
58
54
|
|
59
|
-
|
55
|
+
* an `init.d` script to easily start/stop/restart your app, and make it load when the server boots;
|
56
|
+
|
57
|
+
* an executable to manually start the server, your rake tasks, or access the console;
|
58
|
+
|
59
|
+
* your configuration files will be available in `/etc/app-name/*.yml`;
|
60
|
+
|
61
|
+
* defaults for your app (host, port, etc.) can be setup in `/etc/default/app-name`;
|
62
|
+
|
63
|
+
* a proper `logrotate` file will be created for you, so that your log files
|
64
|
+
don't eat all the disk space of your server;
|
65
|
+
|
66
|
+
* and a few other things.
|
67
|
+
|
68
|
+
The default target installation directory for all the other app files will be
|
60
69
|
`/opt/local/app-name`. This can be configured.
|
61
70
|
|
62
71
|
## Requirements
|
63
72
|
|
64
73
|
* You must use Rails3+ and ruby1.9+ in your application. This may work with
|
65
|
-
other rubies but then you'll need to add
|
74
|
+
other rubies but then you'll need to add adapt the dependencies.
|
66
75
|
|
67
76
|
* Your Rails application must be able to run with the
|
68
77
|
[`thin`](http://code.macournoyer.com/thin/) web server. Don't forget to add
|
@@ -74,9 +83,60 @@ The default target installation directory for the other app files will be
|
|
74
83
|
email is taken from the git configuration, and the changelog is populated
|
75
84
|
based on the git log between two versions.
|
76
85
|
|
77
|
-
## Getting started
|
86
|
+
## Getting started (quickly)
|
87
|
+
|
88
|
+
Aka, how to build a debian package out of your Rails app in 5 minutes. This
|
89
|
+
assumes that you have a VM or server running Debian Squeeze readily available
|
90
|
+
for building the package.
|
91
|
+
|
92
|
+
Install `pkgr`:
|
93
|
+
|
94
|
+
$ gem install pkgr
|
95
|
+
|
96
|
+
Create a new Rails app:
|
97
|
+
|
98
|
+
$ rails new my-app
|
99
|
+
create
|
100
|
+
create README.rdoc
|
101
|
+
create Rakefile
|
102
|
+
...
|
103
|
+
create vendor/plugins
|
104
|
+
create vendor/plugins/.gitkeep
|
105
|
+
|
106
|
+
Initialize the git repository (if not already done):
|
107
|
+
|
108
|
+
$ cd my-app
|
109
|
+
$ git init
|
110
|
+
$ git add .
|
111
|
+
$ git commit -m "First commit"
|
112
|
+
|
113
|
+
Package (this will create a new branch prefixed with `pkgr-`. You can delete
|
114
|
+
it afterwards):
|
115
|
+
|
116
|
+
$ pkgr --uri . --bump 0.1.0 --host debian-build-machine
|
117
|
+
...
|
118
|
+
my-app_0.1.0-1_amd64.deb 100% 6080KB 5.9MB/s 00:01
|
119
|
+
|
120
|
+
Your .deb package is in `pkg/my-app_0.1.0-1_amd64.deb`. Install it on your production server:
|
121
|
+
|
122
|
+
$ scp pkg/my-app_0.1.0-1_amd64.deb production-machine:/tmp/
|
123
|
+
$ ssh production-machine 'sudo dpkg -i /tmp/my-app_0.1.0-1_amd64.deb || sudo apt-get -f -y install'
|
124
|
+
|
125
|
+
The app should now be up and running on `0.0.0.0:8000`. You might want to change this in the `/etc/default/my-app` file on the server.
|
126
|
+
|
127
|
+
$ ssh production-machine 'curl -is localhost:8000'
|
128
|
+
|
129
|
+
You should get a 404. This is expected since this app does nothing. You can
|
130
|
+
now build your app and update the `config/pkgr.yml` file when you have system
|
131
|
+
dependencies to add.
|
132
|
+
|
133
|
+
Enjoy, and you may want to read the step-by-step guide to learn more about
|
134
|
+
what's going on.
|
135
|
+
|
136
|
+
## Getting started (step by step)
|
78
137
|
|
79
|
-
|
138
|
+
`pkgr` can be used as a command-line tool (fully automatic), or through the
|
139
|
+
rake tasks it installs when you require it in your Gemfile. Below is how you would use the rake tasks to accomplish the same thing as before.
|
80
140
|
|
81
141
|
### Setup
|
82
142
|
|
@@ -93,7 +153,7 @@ Create a new Rails app:
|
|
93
153
|
Go into your app directory, and add `pkgr` to your Gemfile:
|
94
154
|
|
95
155
|
$ cd my-app
|
96
|
-
$ echo "gem 'pkgr'
|
156
|
+
$ echo "gem 'pkgr'" >> Gemfile
|
97
157
|
|
98
158
|
For now, this packaging tool only supports `thin` (would be easy to add others, though), so add it to your Gemfile:
|
99
159
|
|
@@ -299,29 +359,11 @@ unauthenticated packages:
|
|
299
359
|
|
300
360
|
production-server # echo 'APT::Get::AllowUnauthenticated "true";' >> /etc/apt/apt.conf.d/allow-unauthenticated
|
301
361
|
|
302
|
-
Easy.
|
303
|
-
|
304
|
-
## Notes of interest
|
305
|
-
|
306
|
-
* your configuration files will be stored in `/etc/my-app/*.yml`, making it easy to manage with Puppet or manually (don't forget to `/etc/init.d/my-app restart` after making changes).
|
307
|
-
|
308
|
-
* you can change how the Thin server is launched by adding options to the `/etc/default/my-app` file.
|
309
|
-
|
310
|
-
* your log files will be stored in `/var/log/my-app/`.
|
311
|
-
|
312
|
-
* your db files will be stored in `var/db/my-app/`.
|
313
|
-
|
314
|
-
* if you've got migrations to run, just do a `my-app rake db:migrate` (we might want to run them automatically as part of the postinstall process).
|
315
|
-
|
316
|
-
* you can launch a console using `my-app console`.
|
317
|
-
|
318
|
-
* use the initd script to start and stop the app: `/etc/init.d/my-app [start|stop|status]`.
|
319
|
-
|
320
362
|
## General usage
|
321
363
|
|
322
|
-
Declare `pkgr` as one of your
|
364
|
+
Declare `pkgr` as one of your dependencies in your `Gemfile`:
|
323
365
|
|
324
|
-
gem 'pkgr'
|
366
|
+
gem 'pkgr'
|
325
367
|
|
326
368
|
Also add `thin`:
|
327
369
|
|
@@ -384,18 +426,24 @@ Once you're ready to package your app, just run the following commands:
|
|
384
426
|
Starting from version 0.3.0, pkgr now comes with an executable, which allows
|
385
427
|
to package any app stored in a git repository with one command.
|
386
428
|
|
387
|
-
For instance, here is how you would package the Redmine app:
|
429
|
+
For instance, here is how you would package the [Redmine] [redmine] app:
|
388
430
|
|
389
|
-
|
431
|
+
$ cd /tmp
|
432
|
+
$ pkgr --uri https://github.com/edavis10/redmine --ref master --bump 1.4.1 \
|
390
433
|
-c https://raw.github.com/crohr/pkgr/master/examples/redmine/configuration.yml \
|
391
434
|
-c https://raw.github.com/crohr/pkgr/master/examples/redmine/database.yml \
|
392
435
|
-c https://raw.github.com/crohr/pkgr/master/examples/redmine/pkgr.yml \
|
393
436
|
--host debian-build
|
394
437
|
|
395
|
-
You .deb package will be available in
|
438
|
+
You .deb package will be available in `/tmp/redmine/pkg/`. In this example,
|
439
|
+
the given `pkgr.yml` configuration file automatically adds a dependency on
|
440
|
+
`mysql-server`, which means that when you install the generated redmine
|
441
|
+
package, it will be ready to be accessed on `0.0.0.0:8000`.
|
442
|
+
|
443
|
+
Note that for simple projects, you may not need to specify all those
|
444
|
+
configuration files on the command line. Redmine is a complex app.
|
396
445
|
|
397
|
-
|
398
|
-
file on the command line. See `pkgr -h` for the list of options available:
|
446
|
+
See `pkgr -h` for the list of options available:
|
399
447
|
|
400
448
|
$ pkgr -h
|
401
449
|
* Description
|
@@ -415,6 +463,24 @@ file on the command line. See `pkgr -h` for the list of options available:
|
|
415
463
|
-h, --help Show this message
|
416
464
|
--version Show version
|
417
465
|
|
466
|
+
[redmine]: http://www.redmine.org/
|
467
|
+
|
468
|
+
## Notes of interest
|
469
|
+
|
470
|
+
* your configuration files will be stored in `/etc/my-app/*.yml`, making it easy to manage with Puppet or manually (don't forget to `/etc/init.d/my-app restart` after making changes).
|
471
|
+
|
472
|
+
* you can change how the Thin server is launched by adding options to the `/etc/default/my-app` file.
|
473
|
+
|
474
|
+
* your log files will be stored in `/var/log/my-app/`.
|
475
|
+
|
476
|
+
* your db files will be stored in `var/db/my-app/`.
|
477
|
+
|
478
|
+
* if you've got migrations to run, just do a `my-app rake db:migrate` (we might want to run them automatically as part of the postinstall process).
|
479
|
+
|
480
|
+
* you can launch a console using `my-app console`.
|
481
|
+
|
482
|
+
* use the initd script to start and stop the app: `/etc/init.d/my-app [start|stop|restart|status]`.
|
483
|
+
|
418
484
|
## Todo
|
419
485
|
|
420
486
|
* Speed up the packaging process (currently, bundler re-downloads all the gems
|
@@ -422,9 +488,9 @@ file on the command line. See `pkgr -h` for the list of options available:
|
|
422
488
|
|
423
489
|
* Include tasks for building RPMs.
|
424
490
|
|
425
|
-
*
|
491
|
+
* The included initd script sucks. Improve it.
|
426
492
|
|
427
|
-
* Populate dependencies based on gems declared in the Gemfile.
|
493
|
+
* Populate system dependencies based on gems declared in the Gemfile.
|
428
494
|
|
429
495
|
* Some tests.
|
430
496
|
|
data/lib/pkgr/cli.rb
CHANGED
@@ -140,17 +140,17 @@ module Pkgr
|
|
140
140
|
Pkgr.setup(dir)
|
141
141
|
|
142
142
|
gemfile = File.read("Gemfile")
|
143
|
-
unless gemfile =~
|
143
|
+
unless gemfile =~ /^gem 'pkgr'/
|
144
144
|
File.open("Gemfile", "a") do |f|
|
145
145
|
f.puts
|
146
146
|
f.puts "gem 'pkgr'"
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
150
|
-
unless gemfile =~
|
150
|
+
unless gemfile =~ /^gem 'thin'/
|
151
151
|
File.open("Gemfile", "a") do |f|
|
152
152
|
f.puts
|
153
|
-
f.puts "gem '
|
153
|
+
f.puts "gem 'thin'"
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
data/lib/pkgr/version.rb
CHANGED