git_wit 0.0.4.pre → 0.0.4.pre2
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/README.md +3 -5
- data/lib/generators/git_wit/ssh_user/ssh_user_generator.rb +12 -3
- data/lib/generators/git_wit/ssh_user/templates/sudoers.tt +3 -0
- data/lib/git_wit/actions/etc/base.rb +38 -0
- data/lib/git_wit/actions/etc/user.rb +36 -0
- data/lib/git_wit/actions/etc.rb +7 -0
- data/lib/git_wit/actions/ssh/sudoers.rb +1 -1
- data/lib/git_wit/actions.rb +4 -0
- data/lib/git_wit/commands/debug.rb +1 -0
- data/lib/git_wit/version.rb +1 -1
- data/lib/git_wit.rb +0 -1
- data/test/dummy/bin/edit_json.rb +16 -0
- data/test/dummy/bin/minitar +16 -0
- data/test/dummy/bin/prettify_json.rb +16 -0
- data/test/dummy/bin/vagrant +16 -0
- data/test/dummy/log/development.log +289 -0
- data/test/dummy/log/test.log +90 -0
- data/test/unit/cli_test.rb +89 -0
- metadata +16 -8
- data/lib/git_wit/shell.rb +0 -115
- data/test/dummy/tmp/pids/server.pid +0 -1
- data/test/unit/shell_test.rb +0 -89
data/README.md
CHANGED
@@ -21,9 +21,7 @@ That's it - your app is hosting git repositories. Create a repositories folder,
|
|
21
21
|
init a bare repo, and push to it:
|
22
22
|
|
23
23
|
```console
|
24
|
-
$ git init
|
25
|
-
$ git add .
|
26
|
-
$ git commit -m "That was easy"
|
24
|
+
$ git init; git add .; git commit -m "That was easy"
|
27
25
|
$ mkdir repositories # Hosted repos folder
|
28
26
|
$ git init --bare repositories/example.git # Example bare repo
|
29
27
|
$ git remote add origin http://localhost:3000/example.git
|
@@ -35,13 +33,13 @@ HTTPS? That works too:
|
|
35
33
|
```console
|
36
34
|
$ sudo echo "pre-loading sudo so we can background tunnels in a moment"
|
37
35
|
$ rails g git_wit:install authenticate authorize_read authorize_write -f
|
38
|
-
$ gem
|
36
|
+
$ echo 'gem "tunnels"' >> Gemfile; bundle
|
39
37
|
$ sudo tunnels 443 3000 & # or `rvmsudo tunnels...` if using RVM
|
40
38
|
$ git remote add https https://localhost/example.git
|
41
39
|
$ GIT_SSL_NO_VERIFY=1 git push https master:https-master # Trust yourself
|
42
40
|
```
|
43
41
|
|
44
|
-
Still not impressed? Try SSH
|
42
|
+
Still not impressed? Try SSH:
|
45
43
|
|
46
44
|
```console
|
47
45
|
$ rails g git_wit:install authenticate authorize_read authorize_write ssh_user:git_wit -f
|
@@ -13,15 +13,16 @@ module GitWit
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def create_user
|
16
|
-
@home = dscl_user ssh_user, home
|
16
|
+
@home = dscl_user ssh_user, home if mac?
|
17
|
+
@home = etc_user ssh_user, home if linux?
|
17
18
|
end
|
18
19
|
|
19
20
|
def create_group
|
20
|
-
dscl_group ssh_group
|
21
|
+
dscl_group ssh_group if mac?
|
21
22
|
end
|
22
23
|
|
23
24
|
def add_user_to_group
|
24
|
-
dscl_group_membership ssh_user, ssh_group
|
25
|
+
dscl_group_membership ssh_user, ssh_group if mac?
|
25
26
|
end
|
26
27
|
|
27
28
|
def build_home
|
@@ -33,6 +34,14 @@ module GitWit
|
|
33
34
|
end
|
34
35
|
|
35
36
|
protected
|
37
|
+
def mac?
|
38
|
+
!!(RbConfig::CONFIG['host_os'] =~ /^darwin/)
|
39
|
+
end
|
40
|
+
|
41
|
+
def linux?
|
42
|
+
!!(RbConfig::CONFIG['host_os'] =~ /^linux/)
|
43
|
+
end
|
44
|
+
|
36
45
|
def ssh_user
|
37
46
|
GitWit.ssh_user
|
38
47
|
end
|
@@ -4,6 +4,9 @@
|
|
4
4
|
Defaults:<%= ssh_user %> env_keep += "SSH_ORIGINAL_COMMAND GEM_HOME GEM_PATH"
|
5
5
|
Defaults:<%= ssh_user %> env_keep += "BUNDLE_GEMFILE RAILS_ENV RAILS_ROOT"
|
6
6
|
|
7
|
+
# The following line is required for many linux distros, but not OS X:
|
8
|
+
<%= '# ' if mac? %>Defaults:<%= ssh_user %> secure_path="<%= git_wit_bindir %>:<%= RbConfig::CONFIG['bindir'] %>:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
9
|
+
|
7
10
|
# Allow <%= rails_user %> to run any command as <%= ssh_user %>
|
8
11
|
<%= rails_user %> ALL=(<%= ssh_user %>) NOPASSWD:ALL
|
9
12
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module GitWit::Actions::Etc
|
2
|
+
class Base < Thor::Actions::EmptyDirectory
|
3
|
+
|
4
|
+
attr_reader :base, :type, :name
|
5
|
+
|
6
|
+
def initialize(base, type, name, config = {})
|
7
|
+
@base, @type, @name = base, type, name
|
8
|
+
@config = {verbose: true}.merge config
|
9
|
+
end
|
10
|
+
|
11
|
+
def invoke!
|
12
|
+
invoke_with_conflict_check do
|
13
|
+
create
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def revoke!
|
18
|
+
say_status :remove, :red
|
19
|
+
destroy if !pretend? && exists?
|
20
|
+
end
|
21
|
+
|
22
|
+
def exists?
|
23
|
+
etc_exists?
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def etc_exists?
|
28
|
+
file = type == :user ? "passwd" : "group"
|
29
|
+
`grep '#{name}:x:' /etc/#{file}`
|
30
|
+
$?.success?
|
31
|
+
end
|
32
|
+
|
33
|
+
def say_status(status, color, msg = nil)
|
34
|
+
msg ||= "#{type} #{name}"
|
35
|
+
base.shell.say_status status, msg, color if config[:verbose]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module GitWit::Actions::Etc
|
2
|
+
class User < Base
|
3
|
+
def initialize(base, name, home, config = {})
|
4
|
+
super base, :user, name, config
|
5
|
+
@home = home
|
6
|
+
end
|
7
|
+
|
8
|
+
def invoke!
|
9
|
+
invoke_with_conflict_check do
|
10
|
+
create
|
11
|
+
end
|
12
|
+
home
|
13
|
+
end
|
14
|
+
|
15
|
+
def revoke!
|
16
|
+
say_status :remove, :red
|
17
|
+
destroy if !pretend? && exists?
|
18
|
+
home
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
def home
|
23
|
+
@home || "/home/#{name}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def create
|
27
|
+
`sudo useradd -M -U -r -s '/bin/bash' -d '#{home}' '#{name}'`
|
28
|
+
raise Thor::Error, "Could not create user #{name}" unless $?.success?
|
29
|
+
end
|
30
|
+
|
31
|
+
def destroy
|
32
|
+
`sudo userdel -r '#{name}'`
|
33
|
+
raise Thor::Error, "Could not destroy user #{name}" unless $?.success?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/git_wit/actions.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
module GitWit; module Actions; end; end
|
2
2
|
|
3
|
+
require "git_wit/actions/etc"
|
4
|
+
require "git_wit/actions/etc/base"
|
5
|
+
require "git_wit/actions/etc/user"
|
3
6
|
require "git_wit/actions/ssh"
|
4
7
|
require "git_wit/actions/ssh/home"
|
5
8
|
require "git_wit/actions/ssh/sudoers"
|
@@ -11,6 +14,7 @@ require "git_wit/actions/dscl/group_membership"
|
|
11
14
|
|
12
15
|
module GitWit
|
13
16
|
module Actions
|
17
|
+
include Etc::Actions
|
14
18
|
include Dscl::Actions
|
15
19
|
include Ssh::Actions
|
16
20
|
end
|
data/lib/git_wit/version.rb
CHANGED
data/lib/git_wit.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'edit_json.rb' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('json', 'edit_json.rb')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'minitar' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('archive-tar-minitar', 'minitar')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'prettify_json.rb' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('json', 'prettify_json.rb')
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'vagrant' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('vagrant', 'vagrant')
|
@@ -1677,3 +1677,292 @@ Started GET "/example.git/info/refs?service=git-receive-pack" for 127.0.0.1 at 2
|
|
1677
1677
|
|
1678
1678
|
|
1679
1679
|
Started POST "/example.git/git-receive-pack" for 127.0.0.1 at 2013-02-23 15:26:05 -0600
|
1680
|
+
Connecting to database specified by database.yml
|
1681
|
+
|
1682
|
+
|
1683
|
+
Started GET "/" for 127.0.0.1 at 2013-02-23 16:30:39 -0600
|
1684
|
+
Processing by RepositoriesController#index as HTML
|
1685
|
+
Completed 500 Internal Server Error in 28ms
|
1686
|
+
|
1687
|
+
ActiveRecord::StatementInvalid - Could not find table 'users':
|
1688
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure'
|
1689
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
|
1690
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
|
1691
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:228:in `columns'
|
1692
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:243:in `column_defaults'
|
1693
|
+
(gem) activerecord-3.2.12/lib/active_record/base.rb:482:in `initialize'
|
1694
|
+
app/models/ability.rb:5:in `initialize'
|
1695
|
+
(gem) cancan-1.6.9/lib/cancan/controller_additions.rb:352:in `current_ability'
|
1696
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:207:in `current_ability'
|
1697
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:77:in `load_collection?'
|
1698
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:33:in `load_resource'
|
1699
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:25:in `load_and_authorize_resource'
|
1700
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:10:in `block in add_before_filter'
|
1701
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:418:in `_run__2174323338086652337__process_action__4209835832759253270__callbacks'
|
1702
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1703
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
|
1704
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1705
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/callbacks.rb:17:in `process_action'
|
1706
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rescue.rb:29:in `process_action'
|
1707
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
|
1708
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `block in instrument'
|
1709
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
|
1710
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `instrument'
|
1711
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
|
1712
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
|
1713
|
+
(gem) activerecord-3.2.12/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
|
1714
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/base.rb:121:in `process'
|
1715
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/rendering.rb:45:in `process'
|
1716
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:203:in `dispatch'
|
1717
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
|
1718
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:246:in `block in action'
|
1719
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
|
1720
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:36:in `call'
|
1721
|
+
(gem) journey-1.0.4/lib/journey/router.rb:68:in `block in call'
|
1722
|
+
(gem) journey-1.0.4/lib/journey/router.rb:56:in `call'
|
1723
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:601:in `call'
|
1724
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:35:in `block in call'
|
1725
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:34:in `call'
|
1726
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
|
1727
|
+
(gem) rack-1.4.5/lib/rack/etag.rb:23:in `call'
|
1728
|
+
(gem) rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
|
1729
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/head.rb:14:in `call'
|
1730
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
|
1731
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/flash.rb:242:in `call'
|
1732
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
|
1733
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
|
1734
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/cookies.rb:341:in `call'
|
1735
|
+
(gem) activerecord-3.2.12/lib/active_record/query_cache.rb:64:in `call'
|
1736
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
|
1737
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
|
1738
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `_run__2934629329071937135__call__3062669868321674216__callbacks'
|
1739
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1740
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
|
1741
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1742
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
|
1743
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/reloader.rb:65:in `call'
|
1744
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
|
1745
|
+
(gem) better_errors-0.6.0/lib/better_errors/middleware.rb:71:in `protected_app_call'
|
1746
|
+
(gem) better_errors-0.6.0/lib/better_errors/middleware.rb:66:in `better_errors_call'
|
1747
|
+
(gem) better_errors-0.6.0/lib/better_errors/middleware.rb:41:in `call'
|
1748
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
|
1749
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
|
1750
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:32:in `call_app'
|
1751
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `block in call'
|
1752
|
+
(gem) activesupport-3.2.12/lib/active_support/tagged_logging.rb:22:in `tagged'
|
1753
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `call'
|
1754
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/request_id.rb:22:in `call'
|
1755
|
+
(gem) rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
|
1756
|
+
(gem) rack-1.4.5/lib/rack/runtime.rb:17:in `call'
|
1757
|
+
(gem) activesupport-3.2.12/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
|
1758
|
+
(gem) rack-1.4.5/lib/rack/lock.rb:15:in `call'
|
1759
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/static.rb:62:in `call'
|
1760
|
+
(gem) railties-3.2.12/lib/rails/engine.rb:479:in `call'
|
1761
|
+
(gem) railties-3.2.12/lib/rails/application.rb:223:in `call'
|
1762
|
+
(gem) railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing'
|
1763
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:147:in `handle'
|
1764
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
|
1765
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
|
1766
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:86:in `block in start'
|
1767
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:66:in `start'
|
1768
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:13:in `run'
|
1769
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:4:in `<main>'
|
1770
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:0:in `<main>'
|
1771
|
+
|
1772
|
+
|
1773
|
+
|
1774
|
+
Started POST "/__better_errors/70222691415840/variables" for 127.0.0.1 at 2013-02-23 16:30:40 -0600
|
1775
|
+
Connecting to database specified by database.yml
|
1776
|
+
GitWit SSH cmd: git shell -c git-receive-pack '/Users/xdissent/Code/git_wit/test/dummy/repositories/example.git'
|
1777
|
+
Connecting to database specified by database.yml
|
1778
|
+
GitWit SSH cmd: git shell -c git-receive-pack '/Users/xdissent/Code/git_wit/test/dummy/repositories/example.git'
|
1779
|
+
Connecting to database specified by database.yml
|
1780
|
+
|
1781
|
+
|
1782
|
+
Started GET "/" for 127.0.0.1 at 2013-02-23 17:35:40 -0600
|
1783
|
+
Processing by RepositoriesController#index as HTML
|
1784
|
+
Completed 500 Internal Server Error in 82ms
|
1785
|
+
|
1786
|
+
ActiveRecord::StatementInvalid - Could not find table 'users':
|
1787
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure'
|
1788
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
|
1789
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
|
1790
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:228:in `columns'
|
1791
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:243:in `column_defaults'
|
1792
|
+
(gem) activerecord-3.2.12/lib/active_record/base.rb:482:in `initialize'
|
1793
|
+
app/models/ability.rb:5:in `initialize'
|
1794
|
+
(gem) cancan-1.6.9/lib/cancan/controller_additions.rb:352:in `current_ability'
|
1795
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:207:in `current_ability'
|
1796
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:77:in `load_collection?'
|
1797
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:33:in `load_resource'
|
1798
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:25:in `load_and_authorize_resource'
|
1799
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:10:in `block in add_before_filter'
|
1800
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:418:in `_run__239347504280997447__process_action__3870065149297230727__callbacks'
|
1801
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1802
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
|
1803
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1804
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/callbacks.rb:17:in `process_action'
|
1805
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rescue.rb:29:in `process_action'
|
1806
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
|
1807
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `block in instrument'
|
1808
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
|
1809
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `instrument'
|
1810
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
|
1811
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
|
1812
|
+
(gem) activerecord-3.2.12/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
|
1813
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/base.rb:121:in `process'
|
1814
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/rendering.rb:45:in `process'
|
1815
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:203:in `dispatch'
|
1816
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
|
1817
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:246:in `block in action'
|
1818
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
|
1819
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:36:in `call'
|
1820
|
+
(gem) journey-1.0.4/lib/journey/router.rb:68:in `block in call'
|
1821
|
+
(gem) journey-1.0.4/lib/journey/router.rb:56:in `call'
|
1822
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:601:in `call'
|
1823
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:35:in `block in call'
|
1824
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:34:in `call'
|
1825
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
|
1826
|
+
(gem) rack-1.4.5/lib/rack/etag.rb:23:in `call'
|
1827
|
+
(gem) rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
|
1828
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/head.rb:14:in `call'
|
1829
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
|
1830
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/flash.rb:242:in `call'
|
1831
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
|
1832
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
|
1833
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/cookies.rb:341:in `call'
|
1834
|
+
(gem) activerecord-3.2.12/lib/active_record/query_cache.rb:64:in `call'
|
1835
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
|
1836
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
|
1837
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `_run__2045829604109974730__call__1408478891629556635__callbacks'
|
1838
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1839
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
|
1840
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1841
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
|
1842
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/reloader.rb:65:in `call'
|
1843
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
|
1844
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:84:in `protected_app_call'
|
1845
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:79:in `better_errors_call'
|
1846
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:56:in `call'
|
1847
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
|
1848
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
|
1849
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:32:in `call_app'
|
1850
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `block in call'
|
1851
|
+
(gem) activesupport-3.2.12/lib/active_support/tagged_logging.rb:22:in `tagged'
|
1852
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `call'
|
1853
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/request_id.rb:22:in `call'
|
1854
|
+
(gem) rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
|
1855
|
+
(gem) rack-1.4.5/lib/rack/runtime.rb:17:in `call'
|
1856
|
+
(gem) activesupport-3.2.12/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
|
1857
|
+
(gem) rack-1.4.5/lib/rack/lock.rb:15:in `call'
|
1858
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/static.rb:62:in `call'
|
1859
|
+
(gem) railties-3.2.12/lib/rails/engine.rb:479:in `call'
|
1860
|
+
(gem) railties-3.2.12/lib/rails/application.rb:223:in `call'
|
1861
|
+
(gem) railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing'
|
1862
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:147:in `handle'
|
1863
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
|
1864
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
|
1865
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:86:in `block in start'
|
1866
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:66:in `start'
|
1867
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:13:in `run'
|
1868
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:4:in `<main>'
|
1869
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:0:in `<main>'
|
1870
|
+
|
1871
|
+
|
1872
|
+
|
1873
|
+
Started POST "/__better_errors/70157365567060/variables" for 127.0.0.1 at 2013-02-23 17:35:40 -0600
|
1874
|
+
Connecting to database specified by database.yml
|
1875
|
+
|
1876
|
+
|
1877
|
+
Started GET "/" for 127.0.0.1 at 2013-02-23 19:34:37 -0600
|
1878
|
+
Processing by RepositoriesController#index as HTML
|
1879
|
+
Completed 500 Internal Server Error in 64ms
|
1880
|
+
|
1881
|
+
ActiveRecord::StatementInvalid - Could not find table 'users':
|
1882
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure'
|
1883
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
|
1884
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
|
1885
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:228:in `columns'
|
1886
|
+
(gem) activerecord-3.2.12/lib/active_record/model_schema.rb:243:in `column_defaults'
|
1887
|
+
(gem) activerecord-3.2.12/lib/active_record/base.rb:482:in `initialize'
|
1888
|
+
app/models/ability.rb:5:in `initialize'
|
1889
|
+
(gem) cancan-1.6.9/lib/cancan/controller_additions.rb:352:in `current_ability'
|
1890
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:207:in `current_ability'
|
1891
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:77:in `load_collection?'
|
1892
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:33:in `load_resource'
|
1893
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:25:in `load_and_authorize_resource'
|
1894
|
+
(gem) cancan-1.6.9/lib/cancan/controller_resource.rb:10:in `block in add_before_filter'
|
1895
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:418:in `_run__3035164196489960414__process_action__77161949566051706__callbacks'
|
1896
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1897
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
|
1898
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1899
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/callbacks.rb:17:in `process_action'
|
1900
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rescue.rb:29:in `process_action'
|
1901
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
|
1902
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `block in instrument'
|
1903
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
|
1904
|
+
(gem) activesupport-3.2.12/lib/active_support/notifications.rb:123:in `instrument'
|
1905
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
|
1906
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
|
1907
|
+
(gem) activerecord-3.2.12/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
|
1908
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/base.rb:121:in `process'
|
1909
|
+
(gem) actionpack-3.2.12/lib/abstract_controller/rendering.rb:45:in `process'
|
1910
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:203:in `dispatch'
|
1911
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
|
1912
|
+
(gem) actionpack-3.2.12/lib/action_controller/metal.rb:246:in `block in action'
|
1913
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
|
1914
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:36:in `call'
|
1915
|
+
(gem) journey-1.0.4/lib/journey/router.rb:68:in `block in call'
|
1916
|
+
(gem) journey-1.0.4/lib/journey/router.rb:56:in `call'
|
1917
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/routing/route_set.rb:601:in `call'
|
1918
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:35:in `block in call'
|
1919
|
+
(gem) warden-1.2.1/lib/warden/manager.rb:34:in `call'
|
1920
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
|
1921
|
+
(gem) rack-1.4.5/lib/rack/etag.rb:23:in `call'
|
1922
|
+
(gem) rack-1.4.5/lib/rack/conditionalget.rb:25:in `call'
|
1923
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/head.rb:14:in `call'
|
1924
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
|
1925
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/flash.rb:242:in `call'
|
1926
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:210:in `context'
|
1927
|
+
(gem) rack-1.4.5/lib/rack/session/abstract/id.rb:205:in `call'
|
1928
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/cookies.rb:341:in `call'
|
1929
|
+
(gem) activerecord-3.2.12/lib/active_record/query_cache.rb:64:in `call'
|
1930
|
+
(gem) activerecord-3.2.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
|
1931
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
|
1932
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `_run__4171490266094897651__call__732453632278865349__callbacks'
|
1933
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
|
1934
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
|
1935
|
+
(gem) activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
|
1936
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
|
1937
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/reloader.rb:65:in `call'
|
1938
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
|
1939
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:84:in `protected_app_call'
|
1940
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:79:in `better_errors_call'
|
1941
|
+
(gem) better_errors-0.7.0/lib/better_errors/middleware.rb:56:in `call'
|
1942
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
|
1943
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
|
1944
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:32:in `call_app'
|
1945
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `block in call'
|
1946
|
+
(gem) activesupport-3.2.12/lib/active_support/tagged_logging.rb:22:in `tagged'
|
1947
|
+
(gem) railties-3.2.12/lib/rails/rack/logger.rb:16:in `call'
|
1948
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/request_id.rb:22:in `call'
|
1949
|
+
(gem) rack-1.4.5/lib/rack/methodoverride.rb:21:in `call'
|
1950
|
+
(gem) rack-1.4.5/lib/rack/runtime.rb:17:in `call'
|
1951
|
+
(gem) activesupport-3.2.12/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
|
1952
|
+
(gem) rack-1.4.5/lib/rack/lock.rb:15:in `call'
|
1953
|
+
(gem) actionpack-3.2.12/lib/action_dispatch/middleware/static.rb:62:in `call'
|
1954
|
+
(gem) railties-3.2.12/lib/rails/engine.rb:479:in `call'
|
1955
|
+
(gem) railties-3.2.12/lib/rails/application.rb:223:in `call'
|
1956
|
+
(gem) railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing'
|
1957
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:147:in `handle'
|
1958
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:99:in `rescue in block (2 levels) in start'
|
1959
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:96:in `block (2 levels) in start'
|
1960
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:86:in `block in start'
|
1961
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:66:in `start'
|
1962
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/lib/nack/server.rb:13:in `run'
|
1963
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:4:in `<main>'
|
1964
|
+
/Users/xdissent/Library/Application Support/Pow/Versions/0.4.0/node_modules/nack/bin/nack_worker:0:in `<main>'
|
1965
|
+
|
1966
|
+
|
1967
|
+
|
1968
|
+
Started POST "/__better_errors/70268531667100/variables" for 127.0.0.1 at 2013-02-23 19:34:37 -0600
|
data/test/dummy/log/test.log
CHANGED
@@ -157,3 +157,93 @@ Connecting to database specified by database.yml
|
|
157
157
|
[1m[35m (0.0ms)[0m rollback transaction
|
158
158
|
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
159
159
|
[1m[35m (0.0ms)[0m rollback transaction
|
160
|
+
Connecting to database specified by database.yml
|
161
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
162
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
163
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
164
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
165
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
166
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
167
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
168
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
169
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
170
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
171
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
172
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
173
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
174
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
175
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
176
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
177
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
178
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
179
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
180
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
181
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
182
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
183
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
184
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
185
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
186
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
187
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
188
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
189
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
190
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
191
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
192
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
193
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
194
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
195
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
196
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
197
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
198
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
199
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
200
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
201
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
202
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
203
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
204
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
205
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
206
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
207
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
208
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
209
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
210
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
211
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
212
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
213
|
+
Connecting to database specified by database.yml
|
214
|
+
[1m[36m (0.4ms)[0m [1mbegin transaction[0m
|
215
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
216
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
217
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
218
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
219
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
220
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
221
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
222
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
223
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
224
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
225
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
226
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
227
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
228
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
229
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
230
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
231
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
232
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
233
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
234
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
235
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
236
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
237
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
238
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
239
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
240
|
+
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
241
|
+
[1m[35m (0.1ms)[0m rollback transaction
|
242
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
243
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
244
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
245
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
246
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
247
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
248
|
+
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
|
249
|
+
[1m[35m (0.0ms)[0m rollback transaction
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CliTest < ActiveSupport::TestCase
|
4
|
+
# def setup
|
5
|
+
# GitWit.stash_config
|
6
|
+
# GitWit.default_config!
|
7
|
+
# end
|
8
|
+
|
9
|
+
# def teardown
|
10
|
+
# GitWit.restore_config
|
11
|
+
# end
|
12
|
+
|
13
|
+
# test "should use RAILS_ROOT env variable if given" do
|
14
|
+
# old_root = ENV.delete "RAILS_ROOT"
|
15
|
+
|
16
|
+
# ENV["RAILS_ROOT"] = "/example/rails/app"
|
17
|
+
# assert_equal ENV["RAILS_ROOT"], GitWit::Shell.rails_root
|
18
|
+
|
19
|
+
# ENV["RAILS_ROOT"] = old_root
|
20
|
+
# end
|
21
|
+
|
22
|
+
# test "should use BUNDLE_GEMFILE env variable if no rails root" do
|
23
|
+
# old_root = ENV.delete "RAILS_ROOT"
|
24
|
+
# old_bundle = ENV.delete "BUNDLE_GEMFILE"
|
25
|
+
|
26
|
+
# ENV["BUNDLE_GEMFILE"] = "/another/rails/app/Gemfile"
|
27
|
+
# assert_equal "/another/rails/app", GitWit::Shell.rails_root
|
28
|
+
|
29
|
+
# ENV["RAILS_ROOT"] = old_root
|
30
|
+
# ENV["BUNDLE_GEMFILE"] = old_bundle
|
31
|
+
# end
|
32
|
+
|
33
|
+
# test "should use current directory if no RAILS_ROOT or BUNDLE_GEMFILE given" do
|
34
|
+
# old_root = ENV.delete "RAILS_ROOT"
|
35
|
+
# old_bundle = ENV.delete "BUNDLE_GEMFILE"
|
36
|
+
|
37
|
+
# tmp_dir = Rails.root.join("tmp").to_s
|
38
|
+
# assert Dir.exist?(tmp_dir)
|
39
|
+
# Dir.chdir(tmp_dir) do
|
40
|
+
# assert_equal tmp_dir, GitWit::Shell.rails_root
|
41
|
+
# end
|
42
|
+
|
43
|
+
# ENV["RAILS_ROOT"] = old_root
|
44
|
+
# ENV["BUNDLE_GEMFILE"] = old_bundle
|
45
|
+
# end
|
46
|
+
|
47
|
+
# test "should deduce the app user from file ownership of rails root" do
|
48
|
+
# old_root = ENV.delete "RAILS_ROOT"
|
49
|
+
|
50
|
+
# ENV["RAILS_ROOT"] = Rails.root.to_s
|
51
|
+
# assert_equal Process.uid, GitWit::Shell.app_user
|
52
|
+
|
53
|
+
# ENV["RAILS_ROOT"] = old_root
|
54
|
+
# end
|
55
|
+
|
56
|
+
# test "should know if it's running as a given user" do
|
57
|
+
# assert GitWit::Shell.running_as?(Process.uid)
|
58
|
+
# end
|
59
|
+
|
60
|
+
# test "should parse git commands into command and repository path" do
|
61
|
+
# ENV["SSH_ORIGINAL_COMMAND"] = "#{GitWit::Shell::SHELL_COMMANDS.first} 'example.git'"
|
62
|
+
# cmd_repo = GitWit::Shell.parse_ssh_original_command
|
63
|
+
# assert_equal 2, cmd_repo.length
|
64
|
+
# assert_equal GitWit::Shell::SHELL_COMMANDS.first, cmd_repo.first
|
65
|
+
# assert_equal "example.git", cmd_repo.last
|
66
|
+
# ENV.delete "SSH_ORIGINAL_COMMAND"
|
67
|
+
# end
|
68
|
+
|
69
|
+
# test "should authenticate by only confirming that a user exists" do
|
70
|
+
# GitWit.configure { |c| c.user_for_authentication = ->(username) { "xxxx" } }
|
71
|
+
# GitWit.configure { |c| c.authenticate = ->(user, password) { raise "tried auth" } }
|
72
|
+
# assert_nothing_raised do
|
73
|
+
# assert_equal "xxxx", GitWit::Shell.authenticate("example")
|
74
|
+
# end
|
75
|
+
# GitWit.configure { |c| c.user_for_authentication = ->(username) { nil } }
|
76
|
+
# assert_nothing_raised do
|
77
|
+
# assert_nil GitWit::Shell.authenticate("example")
|
78
|
+
# end
|
79
|
+
# end
|
80
|
+
|
81
|
+
# test "should authorize read/write based on git command given" do
|
82
|
+
# GitWit.configure { |c| c.authorize_write = ->(user, repository) { user == "w" } }
|
83
|
+
# GitWit.configure { |c| c.authorize_read = ->(user, repository) { user == "r" } }
|
84
|
+
# assert GitWit::Shell.authorize("git-receive-pack", "w", "example.git")
|
85
|
+
# assert !GitWit::Shell.authorize("git-receive-pack", "r", "example.git")
|
86
|
+
# assert !GitWit::Shell.authorize("git-upload-pack", "w", "example.git")
|
87
|
+
# assert GitWit::Shell.authorize("git-upload-pack", "r", "example.git")
|
88
|
+
# end
|
89
|
+
end
|
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.4.
|
4
|
+
version: 0.0.4.pre2
|
5
5
|
prerelease: 6
|
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-02-
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -84,6 +84,9 @@ files:
|
|
84
84
|
- lib/git_wit/actions/dscl/group_membership.rb
|
85
85
|
- lib/git_wit/actions/dscl/user.rb
|
86
86
|
- lib/git_wit/actions/dscl.rb
|
87
|
+
- lib/git_wit/actions/etc/base.rb
|
88
|
+
- lib/git_wit/actions/etc/user.rb
|
89
|
+
- lib/git_wit/actions/etc.rb
|
87
90
|
- lib/git_wit/actions/ssh/home.rb
|
88
91
|
- lib/git_wit/actions/ssh/sudoers.rb
|
89
92
|
- lib/git_wit/actions/ssh.rb
|
@@ -98,7 +101,6 @@ files:
|
|
98
101
|
- lib/git_wit/commands/util.rb
|
99
102
|
- lib/git_wit/engine.rb
|
100
103
|
- lib/git_wit/errors.rb
|
101
|
-
- lib/git_wit/shell.rb
|
102
104
|
- lib/git_wit/version.rb
|
103
105
|
- lib/git_wit.rb
|
104
106
|
- lib/tasks/git_wit.rake
|
@@ -147,11 +149,14 @@ files:
|
|
147
149
|
- test/dummy/app/views/repositories/new.html.erb
|
148
150
|
- test/dummy/app/views/repositories/show.html.erb
|
149
151
|
- test/dummy/bin/coderay
|
152
|
+
- test/dummy/bin/edit_json.rb
|
150
153
|
- test/dummy/bin/erubis
|
151
154
|
- test/dummy/bin/git_wit
|
152
155
|
- test/dummy/bin/htmldiff
|
153
156
|
- test/dummy/bin/ldiff
|
157
|
+
- test/dummy/bin/minitar
|
154
158
|
- test/dummy/bin/posix-spawn-benchmark
|
159
|
+
- test/dummy/bin/prettify_json.rb
|
155
160
|
- test/dummy/bin/pry
|
156
161
|
- test/dummy/bin/rackup
|
157
162
|
- test/dummy/bin/rails
|
@@ -164,6 +169,7 @@ files:
|
|
164
169
|
- test/dummy/bin/tilt
|
165
170
|
- test/dummy/bin/tt
|
166
171
|
- test/dummy/bin/tunnels
|
172
|
+
- test/dummy/bin/vagrant
|
167
173
|
- test/dummy/config/application.rb
|
168
174
|
- test/dummy/config/boot.rb
|
169
175
|
- test/dummy/config/database.yml
|
@@ -212,7 +218,6 @@ files:
|
|
212
218
|
- test/dummy/test/unit/public_key_test.rb
|
213
219
|
- test/dummy/test/unit/repository_test.rb
|
214
220
|
- test/dummy/test/unit/user_test.rb
|
215
|
-
- test/dummy/tmp/pids/server.pid
|
216
221
|
- test/dummy/tmp/restart.txt
|
217
222
|
- test/functional/git_wit/git_controller_test.rb
|
218
223
|
- test/git_wit_test.rb
|
@@ -220,8 +225,8 @@ files:
|
|
220
225
|
- test/test_helper.rb
|
221
226
|
- test/unit/auth_test.rb
|
222
227
|
- test/unit/authorized_keys_test.rb
|
228
|
+
- test/unit/cli_test.rb
|
223
229
|
- test/unit/config_test.rb
|
224
|
-
- test/unit/shell_test.rb
|
225
230
|
- bin/git_wit
|
226
231
|
homepage: http://xdissent.github.com/git_wit/
|
227
232
|
licenses: []
|
@@ -237,7 +242,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
242
|
version: '0'
|
238
243
|
segments:
|
239
244
|
- 0
|
240
|
-
hash: -
|
245
|
+
hash: -3246049142049628021
|
241
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
242
247
|
none: false
|
243
248
|
requirements:
|
@@ -293,11 +298,14 @@ test_files:
|
|
293
298
|
- test/dummy/app/views/repositories/new.html.erb
|
294
299
|
- test/dummy/app/views/repositories/show.html.erb
|
295
300
|
- test/dummy/bin/coderay
|
301
|
+
- test/dummy/bin/edit_json.rb
|
296
302
|
- test/dummy/bin/erubis
|
297
303
|
- test/dummy/bin/git_wit
|
298
304
|
- test/dummy/bin/htmldiff
|
299
305
|
- test/dummy/bin/ldiff
|
306
|
+
- test/dummy/bin/minitar
|
300
307
|
- test/dummy/bin/posix-spawn-benchmark
|
308
|
+
- test/dummy/bin/prettify_json.rb
|
301
309
|
- test/dummy/bin/pry
|
302
310
|
- test/dummy/bin/rackup
|
303
311
|
- test/dummy/bin/rails
|
@@ -310,6 +318,7 @@ test_files:
|
|
310
318
|
- test/dummy/bin/tilt
|
311
319
|
- test/dummy/bin/tt
|
312
320
|
- test/dummy/bin/tunnels
|
321
|
+
- test/dummy/bin/vagrant
|
313
322
|
- test/dummy/config/application.rb
|
314
323
|
- test/dummy/config/boot.rb
|
315
324
|
- test/dummy/config/database.yml
|
@@ -358,7 +367,6 @@ test_files:
|
|
358
367
|
- test/dummy/test/unit/public_key_test.rb
|
359
368
|
- test/dummy/test/unit/repository_test.rb
|
360
369
|
- test/dummy/test/unit/user_test.rb
|
361
|
-
- test/dummy/tmp/pids/server.pid
|
362
370
|
- test/dummy/tmp/restart.txt
|
363
371
|
- test/functional/git_wit/git_controller_test.rb
|
364
372
|
- test/git_wit_test.rb
|
@@ -366,5 +374,5 @@ test_files:
|
|
366
374
|
- test/test_helper.rb
|
367
375
|
- test/unit/auth_test.rb
|
368
376
|
- test/unit/authorized_keys_test.rb
|
377
|
+
- test/unit/cli_test.rb
|
369
378
|
- test/unit/config_test.rb
|
370
|
-
- test/unit/shell_test.rb
|
data/lib/git_wit/shell.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
module GitWit
|
2
|
-
module Shell
|
3
|
-
SHELL_COMMANDS = %w(git-upload-pack git-receive-pack git-upload-archive)
|
4
|
-
|
5
|
-
def self.run
|
6
|
-
exec_with_sudo!
|
7
|
-
return run_debug if debug?
|
8
|
-
boot_app
|
9
|
-
command, repository = parse_ssh_original_command
|
10
|
-
user = authenticate! ARGV[0]
|
11
|
-
authorize! command, user, repository
|
12
|
-
|
13
|
-
repo_path = File.expand_path File.join(GitWit.repositories_path, repository)
|
14
|
-
cmd = ["git", "shell", "-c", "#{command} '#{repo_path}'"]
|
15
|
-
Rails.logger.info "GitWit SSH command: #{cmd.join " "}"
|
16
|
-
exec *cmd
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.exec_with_sudo!(user = app_user)
|
20
|
-
return if running_as?(user)
|
21
|
-
Dir.chdir rails_root
|
22
|
-
ENV["TERM"] = "dumb"
|
23
|
-
cmd = ["sudo", "-u", "##{app_user}", $PROGRAM_NAME, *ARGV]
|
24
|
-
exec *cmd
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.debug?
|
28
|
-
ARGV.include? "--debug"
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.running_as?(user)
|
32
|
-
Process.uid == user
|
33
|
-
end
|
34
|
-
|
35
|
-
def self.app_user
|
36
|
-
File.stat(rails_root).uid
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.rails_root
|
40
|
-
return File.expand_path(ENV["RAILS_ROOT"]) if ENV["RAILS_ROOT"]
|
41
|
-
return File.expand_path("..", ENV["BUNDLE_GEMFILE"]) if ENV["BUNDLE_GEMFILE"]
|
42
|
-
Dir.pwd
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.boot_app
|
46
|
-
require File.expand_path File.join(rails_root, "config/environment")
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.parse_ssh_original_command
|
50
|
-
/^(?<cmd>git-[^\s]+)\s+'(?<repository>[^']+\.git)'/ =~ ENV["SSH_ORIGINAL_COMMAND"]
|
51
|
-
unless SHELL_COMMANDS.include? cmd
|
52
|
-
abort "Unknown command: #{ENV["SSH_ORIGINAL_COMMAND"]}"
|
53
|
-
end
|
54
|
-
[cmd, repository]
|
55
|
-
end
|
56
|
-
|
57
|
-
def self.authenticate(username)
|
58
|
-
GitWit.user_for_authentication username
|
59
|
-
end
|
60
|
-
|
61
|
-
def self.authenticate!(username)
|
62
|
-
user = authenticate username
|
63
|
-
abort "Anonymous access denied" if user.nil?
|
64
|
-
user
|
65
|
-
end
|
66
|
-
|
67
|
-
def self.authorize(command, user, repository)
|
68
|
-
op = command == "git-receive-pack" ? :write : :read
|
69
|
-
GitWit.authorize op, user, repository
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.authorize!(command, user, repository)
|
73
|
-
abort "Unauthorized" unless authorize command, user, repository
|
74
|
-
end
|
75
|
-
|
76
|
-
def self.run_debug
|
77
|
-
require "pp"
|
78
|
-
puts "*** GitWit DEBUG ***\n\n"
|
79
|
-
puts "ENVIRONMENT:"
|
80
|
-
pp ENV
|
81
|
-
puts "\n*** GitWit DEBUG ***\n"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.run_shell_test(quiet = true)
|
86
|
-
success = false
|
87
|
-
Dir.mktmpdir do |ssh|
|
88
|
-
user = "git_wit_shell_test"
|
89
|
-
key_file = File.join ssh, "id_rsa"
|
90
|
-
pub_key_file = "#{key_file}.pub"
|
91
|
-
|
92
|
-
cmd = %(ssh-keygen -q -t rsa -C "#{user}" -f "#{key_file}" -N "")
|
93
|
-
puts "Running #{cmd}" unless quiet
|
94
|
-
`#{cmd}`
|
95
|
-
|
96
|
-
pub_key = File.open(pub_key_file) { |f| f.read }
|
97
|
-
debug_key = AuthorizedKeys::Key.shell_key_for_username user, pub_key, true
|
98
|
-
authorized_keys_file.add debug_key
|
99
|
-
puts "Added key: #{debug_key}" unless quiet
|
100
|
-
|
101
|
-
cmd = %(SSH_AUTH_SOCK="" ssh -i "#{key_file}" #{GitWit.ssh_user}@localhost test 123)
|
102
|
-
puts "Running #{cmd}" unless quiet
|
103
|
-
out = `#{cmd}`
|
104
|
-
puts out unless quiet
|
105
|
-
success = $?.success?
|
106
|
-
if success
|
107
|
-
puts "Success" unless quiet
|
108
|
-
else
|
109
|
-
puts "ERROR!" unless quiet
|
110
|
-
end
|
111
|
-
authorized_keys_file.remove debug_key
|
112
|
-
end
|
113
|
-
success
|
114
|
-
end
|
115
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
5431
|
data/test/unit/shell_test.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ShellTest < ActiveSupport::TestCase
|
4
|
-
def setup
|
5
|
-
GitWit.stash_config
|
6
|
-
GitWit.default_config!
|
7
|
-
end
|
8
|
-
|
9
|
-
def teardown
|
10
|
-
GitWit.restore_config
|
11
|
-
end
|
12
|
-
|
13
|
-
test "should use RAILS_ROOT env variable if given" do
|
14
|
-
old_root = ENV.delete "RAILS_ROOT"
|
15
|
-
|
16
|
-
ENV["RAILS_ROOT"] = "/example/rails/app"
|
17
|
-
assert_equal ENV["RAILS_ROOT"], GitWit::Shell.rails_root
|
18
|
-
|
19
|
-
ENV["RAILS_ROOT"] = old_root
|
20
|
-
end
|
21
|
-
|
22
|
-
test "should use BUNDLE_GEMFILE env variable if no rails root" do
|
23
|
-
old_root = ENV.delete "RAILS_ROOT"
|
24
|
-
old_bundle = ENV.delete "BUNDLE_GEMFILE"
|
25
|
-
|
26
|
-
ENV["BUNDLE_GEMFILE"] = "/another/rails/app/Gemfile"
|
27
|
-
assert_equal "/another/rails/app", GitWit::Shell.rails_root
|
28
|
-
|
29
|
-
ENV["RAILS_ROOT"] = old_root
|
30
|
-
ENV["BUNDLE_GEMFILE"] = old_bundle
|
31
|
-
end
|
32
|
-
|
33
|
-
test "should use current directory if no RAILS_ROOT or BUNDLE_GEMFILE given" do
|
34
|
-
old_root = ENV.delete "RAILS_ROOT"
|
35
|
-
old_bundle = ENV.delete "BUNDLE_GEMFILE"
|
36
|
-
|
37
|
-
tmp_dir = Rails.root.join("tmp").to_s
|
38
|
-
assert Dir.exist?(tmp_dir)
|
39
|
-
Dir.chdir(tmp_dir) do
|
40
|
-
assert_equal tmp_dir, GitWit::Shell.rails_root
|
41
|
-
end
|
42
|
-
|
43
|
-
ENV["RAILS_ROOT"] = old_root
|
44
|
-
ENV["BUNDLE_GEMFILE"] = old_bundle
|
45
|
-
end
|
46
|
-
|
47
|
-
test "should deduce the app user from file ownership of rails root" do
|
48
|
-
old_root = ENV.delete "RAILS_ROOT"
|
49
|
-
|
50
|
-
ENV["RAILS_ROOT"] = Rails.root.to_s
|
51
|
-
assert_equal Process.uid, GitWit::Shell.app_user
|
52
|
-
|
53
|
-
ENV["RAILS_ROOT"] = old_root
|
54
|
-
end
|
55
|
-
|
56
|
-
test "should know if it's running as a given user" do
|
57
|
-
assert GitWit::Shell.running_as?(Process.uid)
|
58
|
-
end
|
59
|
-
|
60
|
-
test "should parse git commands into command and repository path" do
|
61
|
-
ENV["SSH_ORIGINAL_COMMAND"] = "#{GitWit::Shell::SHELL_COMMANDS.first} 'example.git'"
|
62
|
-
cmd_repo = GitWit::Shell.parse_ssh_original_command
|
63
|
-
assert_equal 2, cmd_repo.length
|
64
|
-
assert_equal GitWit::Shell::SHELL_COMMANDS.first, cmd_repo.first
|
65
|
-
assert_equal "example.git", cmd_repo.last
|
66
|
-
ENV.delete "SSH_ORIGINAL_COMMAND"
|
67
|
-
end
|
68
|
-
|
69
|
-
test "should authenticate by only confirming that a user exists" do
|
70
|
-
GitWit.configure { |c| c.user_for_authentication = ->(username) { "xxxx" } }
|
71
|
-
GitWit.configure { |c| c.authenticate = ->(user, password) { raise "tried auth" } }
|
72
|
-
assert_nothing_raised do
|
73
|
-
assert_equal "xxxx", GitWit::Shell.authenticate("example")
|
74
|
-
end
|
75
|
-
GitWit.configure { |c| c.user_for_authentication = ->(username) { nil } }
|
76
|
-
assert_nothing_raised do
|
77
|
-
assert_nil GitWit::Shell.authenticate("example")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
test "should authorize read/write based on git command given" do
|
82
|
-
GitWit.configure { |c| c.authorize_write = ->(user, repository) { user == "w" } }
|
83
|
-
GitWit.configure { |c| c.authorize_read = ->(user, repository) { user == "r" } }
|
84
|
-
assert GitWit::Shell.authorize("git-receive-pack", "w", "example.git")
|
85
|
-
assert !GitWit::Shell.authorize("git-receive-pack", "r", "example.git")
|
86
|
-
assert !GitWit::Shell.authorize("git-upload-pack", "w", "example.git")
|
87
|
-
assert GitWit::Shell.authorize("git-upload-pack", "r", "example.git")
|
88
|
-
end
|
89
|
-
end
|