git_wit 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -6,9 +6,21 @@ Dead simple Git hosting for Rails apps.
6
6
 
7
7
  ## Quickstart
8
8
 
9
- Run `rails g git_wit:install` and checkout `config/initializers/git_wit.rb`.
10
- You'll want to first change `config.repositories_path` to a folder where you'd
11
- like to store your repositories. Let's use "tmp/repositories" in our app root
9
+ Create a Rails 3.2 app if you don't already have one. Add `git_wit` to your
10
+ Gemfile:
11
+
12
+ ```ruby
13
+ # Use github for now - early development:
14
+ gem "git_wit", git: "https://github.com/xdissent/git_wit.git"
15
+
16
+ # Later it might be safe to use a rubygems release:
17
+ # gem "git_wit", "~> 0.1.0"
18
+ ```
19
+
20
+ Run `bundle install` followed by `rails g git_wit:install` and then checkout
21
+ [`config/initializers/git_wit.rb`](https://github.com/xdissent/git_wit/blob/master/lib/generators/git_wit/templates/git_wit.rb).
22
+ You'll want to first change `config.repositories_path` to a folder where you'd
23
+ like to store your repositories. Let's use "tmp/repositories" in our app root
12
24
  for fun:
13
25
 
14
26
  ```ruby
@@ -70,13 +82,138 @@ $ git push origin master
70
82
  Your server will ask you for a username and password when you push - use
71
83
  `writer` for both and it should accept your changes.
72
84
 
73
- ## SSH support
74
85
 
75
- See the dummy app in `test/dummy` for a working example of `authorized_keys`
76
- management for the `ssh_user`.
86
+ ## Advanced Usage (Devise, Cancan, etc.)
87
+
88
+ See [`test/dummy`](https://github.com/xdissent/git_wit/tree/master/test/dummy)
89
+ for an example app that integrates
90
+ [Devise](https://github.com/plataformatec/devise),
91
+ [Cancan](https://github.com/ryanb/cancan), and
92
+ [twitter-bootstrap-rails](https://github.com/seyhunak/twitter-bootstrap-rails).
93
+ Example controllers for managing repositories and public keys are included.
94
+
95
+
96
+ ## SSH support - AKA: The hard part
97
+
98
+ To enable git operations over SSH, you **must have a dedicated SSH user**. This
99
+ user will *only* be used for SSH autentication. Immediately after successfully
100
+ authenticating, the SSH user will `sudo` to the application user to continue
101
+ with the git operation. This eliminates the need for all the bat-shit crazy git
102
+ pulls/pushes and SSH wrappers and crap that are typical of gitolite/gitosis
103
+ setups. Your application user owns everything except the `authorized_keys` file
104
+ and the `ssh_user` only needs to know how to call the `gw-shell` command.
105
+
106
+ First, create a dedicated SSH user. On Mountain Lion:
107
+
108
+ ```console
109
+ $ sudo dscl . -create /Groups/gitwit
110
+ $ sudo dscl . -create /Groups/gitwit PrimaryGroupID 333
111
+ $ sudo dscl . -create /Groups/gitwit RealName "GitWit Server"
112
+ $ sudo dscl . -create /Users/gitwit UniqueID 333
113
+ $ sudo dscl . -create /Users/gitwit PrimaryGroupID 333
114
+ $ sudo dscl . -create /Users/gitwit NFSHomeDirectory /var/gitwit
115
+ $ sudo dscl . -create /Users/gitwit UserShell /bin/bash
116
+ $ sudo dscl . -create /Users/gitwit RealName "GitWit Server"
117
+ $ sudo mkdir -p ~gitwit
118
+ $ sudo chown -R gitwit:gitwit ~gitwit
119
+ ```
120
+
121
+ Enable the `ssh_user` config value in `config/initializers/git_wit.rb`:
122
+
123
+ ```ruby
124
+ config.ssh_user = "gitwit"
125
+ ```
126
+
127
+ Now your application user needs to be allowed to `sudo` as `ssh_user` and vice
128
+ versa. Edit `/etc/sudoers` using `sudo visudo` and add the following lines:
129
+
130
+ ```
131
+ rails_user ALL=(gitwit) NOPASSWD:ALL
132
+ gitwit ALL=(rails_user) NOPASSWD:ALL
133
+ ```
134
+
135
+ Replace `rails_user` with the application under which your Rails app runs, which
136
+ will be your personal username if using `rails s` or Pow.
137
+
138
+ Test your `sudo` rights and initialize the `ssh_user` environment:
139
+
140
+ ```console
141
+ $ sudo -u gitwit -i
142
+ $ mkdir .ssh
143
+ $ chmod 700 .ssh
144
+ $ touch .ssh/authorized_keys
145
+ $ chmod 600 .ssh/authorized_keys
146
+ ```
147
+
148
+ If you're using RVM or some other wacky environment manipulating tool, you're
149
+ going to want to adjust the login environment for `ssh_user` by creating a
150
+ `~ssh_user/.bashrc` file. For example, to load a specific RVM gemset:
151
+
152
+ ```bash
153
+ source "/Users/xdissent/.rvm/environments/ruby-1.9.3-p385@git_wit"
154
+ ```
155
+
156
+ You may also need to adjust the `PATH` to include the location of the `gw-shell`
157
+ executable. If you're using `bundle --binstubs` for example:
158
+
159
+ ```bash
160
+ export PATH="/path/to/app/bin:$PATH"
161
+ ```
162
+
163
+ The `gw-shell` command handles the authentication and authorization for the SSH
164
+ protocol. It is initially called by `ssh_user` upon login (git operation) and it
165
+ will attempt to `sudo` to the application user and re-run itself with the same
166
+ environment. It determines which user is the "application user" by looking at
167
+ who owns the rails app root folder. To determine where the app root is actually
168
+ located, it looks for the ENV variables `RAILS_ROOT` and `BUNDLE_GEMFILE` in
169
+ order. When in doubt, set `RAILS_ROOT` in `~ssh_user/.bashrc`:
170
+
171
+ ```bash
172
+ export RAILS_ROOT="/path/to/app"
173
+ ```
174
+
175
+ **Remember to add `export RAILS_ENV="production"` for production deployments!**
176
+
177
+ You can easily sanity check your environment using `sudo` as your app user:
178
+
179
+ ```console
180
+ $ sudo -u gitwit -i
181
+ $ source .bashrc
182
+ $ which gw-shell
183
+ /Users/xdissent/Code/git_wit/stubs/gw-shell
184
+ $ echo $RAILS_ROOT
185
+ /Users/xdissent/Code/git_wit/test/dummy
186
+ ```
187
+
188
+ Now all that's left to do is add some `authorized_keys` and you're all set.
189
+ This can be done from the rails console (`rails c`):
190
+
191
+ ```ruby
192
+ GitWit.add_authorized_key "writer", "ssh-rsa long-ass-key-string writer@example.com"
193
+ # => nil
194
+ GitWit.authorized_keys_file.keys
195
+ # => [command="gw-shell writer",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa long-ass-key-string writer@example.com]
196
+ ```
197
+
198
+ You may now clone/push/pull over SSH - assuming the key you installed for
199
+ `writer` is known to your ssh agent (ie `~/.ssh/id_rsa`):
200
+
201
+ ```console
202
+ $ git clone gitwit@localhost:example.git
203
+ ```
204
+
205
+ See the dummy app in
206
+ [`test/dummy`](https://github.com/xdissent/git_wit/tree/master/test/dummy) for
207
+ a more advanced example of `authorized_keys` management.
208
+
209
+
210
+ ## Git hooks and configs and umasks and everything
77
211
 
78
- **NOTE** To manage SSH keys, the `ssh_user` *must* be allowed to `sudo` as the
79
- Rails application user, **and** vice versa. More documentation is forthcoming.
212
+ Dude, your app owns the repos now. Hooks are just files again! Rediscover the
213
+ [grit](https://github.com/mojombo/grit) gem and go nuts with all kinds of fun
214
+ stuff that used to be a serious pain. Paranoid? Lock down the permissions on
215
+ your repositories folder so that only your application user can read it. The
216
+ SSH shell will still be executed as the application user so it's no sweat.
80
217
 
81
218
 
82
219
  This project rocks and uses MIT-LICENSE.
data/lib/git_wit/shell.rb CHANGED
@@ -22,8 +22,8 @@ module GitWit
22
22
  end
23
23
 
24
24
  def self.rails_root
25
- return File.expand_path(ENV["RAILS_ROOT"]) if ENV["RAILS_ROOT"].present?
26
- return File.expand_path("..", ENV["BUNDLE_GEMFILE"]) if ENV["BUNDLE_GEMFILE"].present?
25
+ return File.expand_path(ENV["RAILS_ROOT"]) if ENV["RAILS_ROOT"]
26
+ return File.expand_path("..", ENV["BUNDLE_GEMFILE"]) if ENV["BUNDLE_GEMFILE"]
27
27
  Dir.pwd
28
28
  end
29
29
 
@@ -43,7 +43,7 @@ module GitWit
43
43
 
44
44
  def self.authenticate!(username)
45
45
  user = authenticate username
46
- abort "Anonymous access denied" unless user.present?
46
+ abort "Anonymous access denied" if user.nil?
47
47
  user
48
48
  end
49
49
 
@@ -1,3 +1,3 @@
1
1
  module GitWit
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,236 @@
1
+ Connecting to database specified by database.yml
2
+
3
+
4
+ Started GET "/" for 127.0.0.1 at 2013-02-18 02:12:23 -0600
5
+ Processing by RepositoriesController#index as HTML
6
+ Repository Load (0.2ms) SELECT "repositories".* FROM "repositories" WHERE "repositories"."public" = 't'
7
+ User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
8
+ Rendered repositories/index.html.erb within layouts/application (45.8ms)
9
+ Completed 200 OK in 298ms (Views: 190.4ms | ActiveRecord: 3.7ms)
10
+
11
+
12
+ Started GET "/assets/twitter-bootstrap-static/bootstrap.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
13
+ Served asset /twitter-bootstrap-static/bootstrap.css - 200 OK (7ms)
14
+
15
+
16
+ Started GET "/assets/twitter-bootstrap-static/fontawesome.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
17
+ Served asset /twitter-bootstrap-static/fontawesome.css - 200 OK (4ms)
18
+
19
+
20
+ Started GET "/assets/repositories.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
21
+ Served asset /repositories.css - 200 OK (2ms)
22
+
23
+
24
+ Started GET "/assets/scaffold.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
25
+ Served asset /scaffold.css - 304 Not Modified (2ms)
26
+
27
+
28
+ Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
29
+ Served asset /jquery_ujs.js - 304 Not Modified (28ms)
30
+
31
+
32
+ Started GET "/assets/twitter/bootstrap/bootstrap-transition.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
33
+ Served asset /twitter/bootstrap/bootstrap-transition.js - 304 Not Modified (4ms)
34
+
35
+
36
+ Started GET "/assets/twitter/bootstrap/bootstrap-alert.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
37
+ Served asset /twitter/bootstrap/bootstrap-alert.js - 304 Not Modified (6ms)
38
+
39
+
40
+ Started GET "/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
41
+ Served asset /twitter/bootstrap/bootstrap-dropdown.js - 304 Not Modified (4ms)
42
+
43
+
44
+ Started GET "/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
45
+ Served asset /twitter/bootstrap/bootstrap-scrollspy.js - 304 Not Modified (3ms)
46
+
47
+
48
+ Started GET "/assets/twitter/bootstrap/bootstrap-tab.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
49
+ Served asset /twitter/bootstrap/bootstrap-tab.js - 304 Not Modified (52ms)
50
+
51
+
52
+ Started GET "/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
53
+ Served asset /twitter/bootstrap/bootstrap-tooltip.js - 304 Not Modified (5ms)
54
+
55
+
56
+ Started GET "/assets/twitter/bootstrap/bootstrap-popover.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
57
+ Served asset /twitter/bootstrap/bootstrap-popover.js - 304 Not Modified (3ms)
58
+
59
+
60
+ Started GET "/assets/twitter/bootstrap/bootstrap-button.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
61
+ Served asset /twitter/bootstrap/bootstrap-button.js - 304 Not Modified (3ms)
62
+
63
+
64
+ Started GET "/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
65
+ Served asset /twitter/bootstrap/bootstrap-collapse.js - 304 Not Modified (3ms)
66
+
67
+
68
+ Started GET "/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
69
+ Served asset /twitter/bootstrap/bootstrap-carousel.js - 304 Not Modified (5ms)
70
+
71
+
72
+ Started GET "/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
73
+ Served asset /twitter/bootstrap/bootstrap-typeahead.js - 304 Not Modified (3ms)
74
+
75
+
76
+ Started GET "/assets/twitter/bootstrap/bootstrap-affix.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
77
+ Served asset /twitter/bootstrap/bootstrap-affix.js - 304 Not Modified (3ms)
78
+
79
+
80
+ Started GET "/assets/twitter/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
81
+ Served asset /twitter/bootstrap.js - 304 Not Modified (17ms)
82
+
83
+
84
+ Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
85
+ Served asset /bootstrap.js - 304 Not Modified (1ms)
86
+
87
+
88
+ Started GET "/assets/public_keys.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
89
+ Served asset /public_keys.js - 304 Not Modified (1ms)
90
+
91
+
92
+ Started GET "/assets/repositories.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
93
+ Served asset /repositories.js - 304 Not Modified (1ms)
94
+
95
+
96
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:24 -0600
97
+ Served asset /application.js - 304 Not Modified (20ms)
98
+ Connecting to database specified by database.yml
99
+
100
+
101
+ Started GET "/assets/bootstrap_and_overrides.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
102
+ Served asset /bootstrap_and_overrides.css - 200 OK (5ms)
103
+
104
+
105
+ Started GET "/assets/public_keys.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
106
+ Served asset /public_keys.css - 200 OK (1ms)
107
+
108
+
109
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
110
+ Served asset /application.css - 304 Not Modified (7ms)
111
+
112
+
113
+ Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
114
+ Served asset /jquery.js - 304 Not Modified (3ms)
115
+
116
+
117
+ Started GET "/assets/twitter/bootstrap/bootstrap-modal.js?body=1" for 127.0.0.1 at 2013-02-18 02:12:27 -0600
118
+ Served asset /twitter/bootstrap/bootstrap-modal.js - 304 Not Modified (3ms)
119
+ Connecting to database specified by database.yml
120
+
121
+
122
+ Started GET "/" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
123
+ Processing by RepositoriesController#index as HTML
124
+ Repository Load (0.7ms) SELECT "repositories".* FROM "repositories" WHERE "repositories"."public" = 't'
125
+ User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
126
+ Rendered repositories/index.html.erb within layouts/application (55.8ms)
127
+ Completed 200 OK in 378ms (Views: 248.3ms | ActiveRecord: 5.2ms)
128
+
129
+
130
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
131
+ Served asset /application.css - 304 Not Modified (15ms)
132
+
133
+
134
+ Started GET "/assets/twitter-bootstrap-static/bootstrap.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
135
+ Served asset /twitter-bootstrap-static/bootstrap.css - 200 OK (13ms)
136
+
137
+
138
+ Started GET "/assets/twitter-bootstrap-static/fontawesome.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
139
+ Served asset /twitter-bootstrap-static/fontawesome.css - 200 OK (39ms)
140
+
141
+
142
+ Started GET "/assets/scaffold.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
143
+ Served asset /scaffold.css - 304 Not Modified (2ms)
144
+
145
+
146
+ Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
147
+ Served asset /jquery_ujs.js - 304 Not Modified (2ms)
148
+
149
+
150
+ Started GET "/assets/twitter/bootstrap/bootstrap-transition.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
151
+ Served asset /twitter/bootstrap/bootstrap-transition.js - 304 Not Modified (4ms)
152
+
153
+
154
+ Started GET "/assets/twitter/bootstrap/bootstrap-modal.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
155
+ Served asset /twitter/bootstrap/bootstrap-modal.js - 304 Not Modified (3ms)
156
+
157
+
158
+ Started GET "/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
159
+ Served asset /twitter/bootstrap/bootstrap-dropdown.js - 304 Not Modified (55ms)
160
+
161
+
162
+ Started GET "/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
163
+ Served asset /twitter/bootstrap/bootstrap-scrollspy.js - 304 Not Modified (4ms)
164
+
165
+
166
+ Started GET "/assets/twitter/bootstrap/bootstrap-tab.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
167
+ Served asset /twitter/bootstrap/bootstrap-tab.js - 304 Not Modified (3ms)
168
+
169
+
170
+ Started GET "/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
171
+ Served asset /twitter/bootstrap/bootstrap-tooltip.js - 304 Not Modified (3ms)
172
+
173
+
174
+ Started GET "/assets/twitter/bootstrap/bootstrap-popover.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
175
+ Served asset /twitter/bootstrap/bootstrap-popover.js - 304 Not Modified (3ms)
176
+
177
+
178
+ Started GET "/assets/twitter/bootstrap/bootstrap-button.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:24 -0600
179
+ Served asset /twitter/bootstrap/bootstrap-button.js - 304 Not Modified (4ms)
180
+
181
+
182
+ Started GET "/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
183
+ Served asset /twitter/bootstrap/bootstrap-collapse.js - 304 Not Modified (3ms)
184
+
185
+
186
+ Started GET "/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
187
+ Served asset /twitter/bootstrap/bootstrap-carousel.js - 304 Not Modified (3ms)
188
+
189
+
190
+ Started GET "/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
191
+ Served asset /twitter/bootstrap/bootstrap-typeahead.js - 304 Not Modified (3ms)
192
+
193
+
194
+ Started GET "/assets/twitter/bootstrap/bootstrap-affix.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
195
+ Served asset /twitter/bootstrap/bootstrap-affix.js - 304 Not Modified (3ms)
196
+
197
+
198
+ Started GET "/assets/twitter/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
199
+ Served asset /twitter/bootstrap.js - 304 Not Modified (14ms)
200
+
201
+
202
+ Started GET "/assets/bootstrap.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
203
+ Served asset /bootstrap.js - 304 Not Modified (1ms)
204
+
205
+
206
+ Started GET "/assets/public_keys.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
207
+ Served asset /public_keys.js - 304 Not Modified (1ms)
208
+
209
+
210
+ Started GET "/assets/repositories.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
211
+ Served asset /repositories.js - 304 Not Modified (1ms)
212
+
213
+
214
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:25 -0600
215
+ Served asset /application.js - 304 Not Modified (20ms)
216
+ Connecting to database specified by database.yml
217
+
218
+
219
+ Started GET "/assets/public_keys.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
220
+ Served asset /public_keys.css - 200 OK (3ms)
221
+
222
+
223
+ Started GET "/assets/bootstrap_and_overrides.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
224
+ Served asset /bootstrap_and_overrides.css - 200 OK (7ms)
225
+
226
+
227
+ Started GET "/assets/repositories.css?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
228
+ Served asset /repositories.css - 200 OK (3ms)
229
+
230
+
231
+ Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
232
+ Served asset /jquery.js - 304 Not Modified (10ms)
233
+
234
+
235
+ Started GET "/assets/twitter/bootstrap/bootstrap-alert.js?body=1" for 127.0.0.1 at 2013-02-18 03:21:28 -0600
236
+ Served asset /twitter/bootstrap/bootstrap-alert.js - 304 Not Modified (26ms)
@@ -0,0 +1,53 @@
1
+ Connecting to database specified by database.yml
2
+  (0.6ms) begin transaction
3
+  (0.0ms) rollback transaction
4
+  (0.0ms) begin transaction
5
+  (0.0ms) rollback transaction
6
+  (0.0ms) begin transaction
7
+  (0.0ms) rollback transaction
8
+  (0.0ms) begin transaction
9
+  (0.0ms) rollback transaction
10
+  (0.0ms) begin transaction
11
+  (0.0ms) rollback transaction
12
+  (0.0ms) begin transaction
13
+  (0.0ms) rollback transaction
14
+  (0.0ms) begin transaction
15
+  (0.0ms) rollback transaction
16
+  (0.0ms) begin transaction
17
+  (0.0ms) rollback transaction
18
+  (0.0ms) begin transaction
19
+  (0.1ms) rollback transaction
20
+  (0.1ms) begin transaction
21
+  (0.1ms) rollback transaction
22
+  (0.1ms) begin transaction
23
+  (0.1ms) rollback transaction
24
+  (0.1ms) begin transaction
25
+  (0.1ms) rollback transaction
26
+  (0.1ms) begin transaction
27
+  (0.1ms) rollback transaction
28
+  (0.1ms) begin transaction
29
+  (0.0ms) rollback transaction
30
+  (0.0ms) begin transaction
31
+  (0.0ms) rollback transaction
32
+  (0.0ms) begin transaction
33
+  (0.0ms) rollback transaction
34
+  (0.0ms) begin transaction
35
+  (0.0ms) rollback transaction
36
+  (0.1ms) begin transaction
37
+  (0.0ms) rollback transaction
38
+  (0.2ms) begin transaction
39
+  (0.1ms) rollback transaction
40
+  (0.0ms) begin transaction
41
+  (0.0ms) rollback transaction
42
+  (0.0ms) begin transaction
43
+  (0.0ms) rollback transaction
44
+  (0.0ms) begin transaction
45
+  (0.0ms) rollback transaction
46
+  (0.0ms) begin transaction
47
+  (0.0ms) rollback transaction
48
+  (0.0ms) begin transaction
49
+  (0.0ms) rollback transaction
50
+  (0.0ms) begin transaction
51
+  (0.0ms) rollback transaction
52
+  (0.0ms) begin transaction
53
+  (0.0ms) rollback transaction
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_wit
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:
@@ -139,6 +139,8 @@ files:
139
139
  - test/dummy/db/migrate/20130217221157_create_public_keys.rb
140
140
  - test/dummy/db/schema.rb
141
141
  - test/dummy/db/test.sqlite3
142
+ - test/dummy/log/development.log
143
+ - test/dummy/log/test.log
142
144
  - test/dummy/public/404.html
143
145
  - test/dummy/public/422.html
144
146
  - test/dummy/public/500.html
@@ -238,12 +240,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
240
  - - ! '>='
239
241
  - !ruby/object:Gem::Version
240
242
  version: '0'
243
+ segments:
244
+ - 0
245
+ hash: -1704736703084215079
241
246
  required_rubygems_version: !ruby/object:Gem::Requirement
242
247
  none: false
243
248
  requirements:
244
249
  - - ! '>='
245
250
  - !ruby/object:Gem::Version
246
251
  version: '0'
252
+ segments:
253
+ - 0
254
+ hash: -1704736703084215079
247
255
  requirements: []
248
256
  rubyforge_project:
249
257
  rubygems_version: 1.8.25
@@ -321,6 +329,8 @@ test_files:
321
329
  - test/dummy/db/migrate/20130217221157_create_public_keys.rb
322
330
  - test/dummy/db/schema.rb
323
331
  - test/dummy/db/test.sqlite3
332
+ - test/dummy/log/development.log
333
+ - test/dummy/log/test.log
324
334
  - test/dummy/public/404.html
325
335
  - test/dummy/public/422.html
326
336
  - test/dummy/public/500.html