capistrano-uberspace 1.0.2 → 1.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9279b0a94cee432653c9d7ef20685975d517c9ff
4
- data.tar.gz: 55d26b6a9feed82248028278cd33a8f647dfcfc9
3
+ metadata.gz: 782159336bca47dafaf38f1950a7910968388cbd
4
+ data.tar.gz: 888ea7900dfaa7568ec0cce8b8bf6bc61ee3325d
5
5
  SHA512:
6
- metadata.gz: 8e060adbce9400163de29a59cedd3d02efda82c83beef2e657a872b45e24dd3816ade014d932983a908f8fe1ef94e2cd4263f6a4ee2c746380f80c554923d331
7
- data.tar.gz: b970bdb307a3552f107f33ae4de19d164a642c2b7e8260e064fb6622762448c782d2f7090f2f71cc27f7707d0c00151a1211d2b858b8d4f2845ed62ad7e60af1
6
+ metadata.gz: 36f4875659761a55a46688e458a832abd205144ebf9d2be7206cac5e050451fac9163bb4c87ffc9d2fa27132e005adc3c7f9d2d1d6a411bf3c6d56ace3e68db6
7
+ data.tar.gz: 8a9b4e819c6936e634f7858a6859216fc8bed65a2f69fd44d4cd1270908914d37499abebbfa321b4a550ce7025c8e15698af47f7b006c41a12de8a6fc1581ab6
data/README.md CHANGED
@@ -13,11 +13,17 @@ gem 'capistrano', '~> 3.4.0'
13
13
  gem 'capistrano-uberspace', github: 'tessi/capistrano-uberspace'
14
14
  ```
15
15
 
16
+ If you do not install `capistrano-uberspace` in the `production`-group, then add `passenger` as a production dependency:
17
+
18
+ ```ruby
19
+ gem 'passenger', group: :production
20
+ ```
21
+
16
22
  And then execute:
17
23
 
18
- $ bundle
24
+ $ bundle install
19
25
 
20
- In your `deploy.rb` file specify some app properties:
26
+ In your `config/deploy.rb` file specify some app properties:
21
27
 
22
28
  ```ruby
23
29
  set :application, 'MyGreatApp'
@@ -42,6 +48,15 @@ set :branch, :production
42
48
  set :domain, 'my-subdomain.example.tld'
43
49
  ```
44
50
 
51
+ Optionally, you may specify HTTP BASIC AUTH authentication in your stage definition:
52
+
53
+ ```
54
+ set :htaccess_username, "username"
55
+ set :htaccess_password, "password"
56
+ # instead of the :htaccess_password you may set the hashed password directly:
57
+ # set :htaccess_password_hashed, "bi2wsSekmG6Yw"
58
+ ```
59
+
45
60
  Be sure to [setup the ssh-connection to your uberspace](https://wiki.uberspace.de/system:ssh#login_mit_ssh-schluessel1) and make sure that your uberspace is able to checkout your repository.
46
61
 
47
62
  Require the following parts in your `Capfile`:
@@ -61,7 +76,7 @@ Please bundle the appropriate database-gem in your `Gemfile`.
61
76
 
62
77
  ## Usage
63
78
 
64
- Execute `bundle exec cap deploy <stage>` to deploy to your uberspace.
79
+ Execute `bundle exec cap <stage> deploy` to deploy to your uberspace.
65
80
 
66
81
  Configurable options:
67
82
 
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = 'capistrano-uberspace'
7
- gem.version = '1.0.2'
7
+ gem.version = '1.1.0'
8
8
  gem.authors = ['Philipp Tessenow']
9
9
  gem.email = ['philipp@tessenow.org']
10
10
  gem.description = %q{uberspace support for your rails app for Capistrano 3.x}
@@ -14,6 +14,18 @@ gem: --user-install --no-rdoc --no-ri
14
14
  end
15
15
  after :'uberspace:check', :'uberspace:setup_gemrc'
16
16
 
17
+ task :setup_npmrc do
18
+ npmrc = <<-EOF
19
+ prefix = #{uberspace_home}
20
+ umask = 077
21
+ EOF
22
+
23
+ on roles fetch(:uberspace_roles) do
24
+ upload! StringIO.new(npmrc), "#{uberspace_home}/.npmrc"
25
+ end
26
+ end
27
+ after :'uberspace:check', :'uberspace:setup_npmrc'
28
+
17
29
  task :install_bundler do
18
30
  on roles fetch(:uberspace_roles) do
19
31
  with fetch(:uberspace_env_variables, {}) do
@@ -94,14 +106,38 @@ exec multilog t ./main
94
106
 
95
107
  task :setup_apache_reverse_proxy do
96
108
  on roles fetch(:uberspace_roles) do
109
+ path = fetch(:domain) ? "/var/www/virtual/#{fetch :user}/#{fetch :domain}" : "/var/www/virtual/#{fetch :user}/html"
110
+ execute "mkdir -p #{path}"
111
+ basic_auth = ''
112
+
113
+ if fetch(:htaccess_username, false)
114
+ unless fetch(:htaccess_password_hashed, false)
115
+ password = fetch(:htaccess_password, -> { abort 'ERROR: Define either :htaccess_password or :htaccess_password_hashed'})
116
+ salt = [*'0'..'9',*'A'..'Z',*'a'..'z'].sample(2).join
117
+ set :htaccess_password_hashed, "#{password}".crypt(salt)
118
+ end
119
+
120
+ htpasswd = <<-EOF
121
+ #{fetch :htaccess_username}:#{fetch :htaccess_password_hashed}
122
+ EOF
123
+ upload! StringIO.new(htpasswd), "#{path}/../.htpasswd"
124
+
125
+ basic_auth = <<-EOF
126
+ AuthType Basic
127
+ AuthName "Restricted"
128
+ AuthUserFile #{File.join(path, '../.htpasswd')}
129
+ Require valid-user
130
+ EOF
131
+ end
132
+ execute "chmod +r #{path}/../.htpasswd"
133
+
97
134
  htaccess = <<-EOF
135
+ #{basic_auth}
98
136
  RewriteEngine On
99
137
  RewriteBase /
100
138
  RewriteRule ^(.*)$ http://localhost:#{passenger_port}/$1 [P]
101
139
  EOF
102
140
 
103
- path = fetch(:domain) ? "/var/www/virtual/#{fetch :user}/#{fetch :domain}" : "/var/www/virtual/#{fetch :user}/html"
104
- execute "mkdir -p #{path}"
105
141
  upload! StringIO.new(htaccess), "#{path}/.htaccess"
106
142
  execute "chmod +r #{path}/.htaccess"
107
143
 
@@ -31,7 +31,7 @@ set :ruby_path, -> { "/package/host/localhost/ruby-#{fetch :ruby_version}/bin" }
31
31
 
32
32
  set :uberspace_env_variables, lambda {
33
33
  {
34
- 'PATH' => "#{fetch :ruby_path}:#{fetch :gem_path}:$PATH"
34
+ 'PATH' => "#{fetch :ruby_path}:#{fetch :gem_path}:/home/#{fetch :user}/bin:$PATH"
35
35
  }.merge(fetch :extra_env_variables)
36
36
  }
37
37
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-uberspace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipp Tessenow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-19 00:00:00.000000000 Z
11
+ date: 2016-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano