pulsar 0.3.5 → 1.0.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +150 -0
  5. data/.ruby-version +1 -1
  6. data/LICENSE.txt +1 -1
  7. data/README.md +4 -265
  8. data/bin/pulsar +1 -1
  9. data/circle.yml +22 -0
  10. data/lib/pulsar.rb +28 -7
  11. data/lib/pulsar/cli.rb +79 -0
  12. data/lib/pulsar/constants.rb +5 -0
  13. data/lib/pulsar/generators/initial_repo/Gemfile +3 -0
  14. data/lib/pulsar/generators/{init_repo → initial_repo}/README.md +1 -1
  15. data/lib/pulsar/generators/initial_repo/apps/Capfile +8 -0
  16. data/lib/pulsar/generators/initial_repo/apps/deploy.rb +35 -0
  17. data/lib/pulsar/generators/initial_repo/apps/your_app/Capfile +18 -0
  18. data/lib/pulsar/generators/initial_repo/apps/your_app/deploy.rb +4 -0
  19. data/lib/pulsar/generators/initial_repo/apps/your_app/production.rb +3 -0
  20. data/lib/pulsar/generators/initial_repo/apps/your_app/staging.rb +3 -0
  21. data/lib/pulsar/generators/initial_repo/recipes/generic/rake.rake +12 -0
  22. data/lib/pulsar/generators/{init_repo/apps/your_app/recipes/production → initial_repo/recipes/rails}/.gitkeep +0 -0
  23. data/lib/pulsar/interactors/add_applications.rb +48 -0
  24. data/lib/pulsar/interactors/cleanup.rb +9 -0
  25. data/lib/pulsar/interactors/clone_repository.rb +50 -0
  26. data/lib/pulsar/interactors/copy_environment_file.rb +30 -0
  27. data/lib/pulsar/interactors/copy_initial_repository.rb +22 -0
  28. data/lib/pulsar/interactors/create_capfile.rb +32 -0
  29. data/lib/pulsar/interactors/create_deploy_file.rb +32 -0
  30. data/lib/pulsar/interactors/create_run_dirs.rb +21 -0
  31. data/lib/pulsar/interactors/identify_repository_location.rb +23 -0
  32. data/lib/pulsar/interactors/identify_repository_type.rb +34 -0
  33. data/lib/pulsar/interactors/run_bundle_install.rb +28 -0
  34. data/lib/pulsar/interactors/run_capistrano.rb +30 -0
  35. data/lib/pulsar/organizers/deploy.rb +16 -0
  36. data/lib/pulsar/organizers/install.rb +7 -0
  37. data/lib/pulsar/organizers/list.rb +12 -0
  38. data/lib/pulsar/version.rb +1 -1
  39. data/pulsar.gemspec +13 -11
  40. data/spec/features/deploy_spec.rb +162 -0
  41. data/spec/features/install_spec.rb +66 -0
  42. data/spec/features/list_spec.rb +140 -0
  43. data/spec/spec_helper.rb +26 -14
  44. data/{lib/pulsar/generators/init_repo/apps/your_app/recipes/staging → spec/support/dummies}/.gitkeep +0 -0
  45. data/spec/support/dummies/conf/dir/Gemfile +3 -0
  46. data/spec/support/dummies/conf/dir/apps/Capfile +9 -0
  47. data/spec/support/dummies/conf/dir/apps/blog/Capfile +1 -0
  48. data/spec/support/dummies/conf/dir/apps/blog/deploy.rb +4 -0
  49. data/spec/support/dummies/conf/dir/apps/blog/production.rb +4 -0
  50. data/spec/support/dummies/conf/dir/apps/blog/staging.rb +4 -0
  51. data/spec/support/dummies/conf/dir/apps/deploy.rb +1 -0
  52. data/{lib/pulsar/generators/init_repo/recipes/rails/.gitkeep → spec/support/dummies/conf/dir/apps/ecommerce/staging.rb} +0 -0
  53. data/spec/support/dummies/conf/dir/recipes/.gitkeep +0 -0
  54. data/spec/support/dummies/conf/dotenv +1 -0
  55. data/spec/support/dummies/conf/empty/apps/.gitkeep +0 -0
  56. data/spec/support/dummies/conf/empty/recipes/.gitkeep +0 -0
  57. data/spec/support/dummies/conf/wrong_bundle/Gemfile +3 -0
  58. data/spec/support/dummies/conf/wrong_bundle/apps/Capfile +9 -0
  59. data/spec/support/dummies/conf/wrong_bundle/apps/blog/Capfile +1 -0
  60. data/spec/support/dummies/conf/wrong_bundle/apps/blog/deploy.rb +4 -0
  61. data/spec/support/dummies/conf/wrong_bundle/apps/blog/production.rb +4 -0
  62. data/spec/support/dummies/conf/wrong_bundle/apps/deploy.rb +1 -0
  63. data/spec/support/dummies/conf/wrong_bundle/recipes/.gitkeep +0 -0
  64. data/spec/support/dummies/conf/wrong_cap/Gemfile +3 -0
  65. data/spec/support/dummies/conf/wrong_cap/apps/Capfile +0 -0
  66. data/spec/support/dummies/conf/wrong_cap/apps/blog/deploy.rb +4 -0
  67. data/spec/support/dummies/conf/wrong_cap/apps/blog/production.rb +4 -0
  68. data/spec/support/dummies/conf/wrong_cap/apps/deploy.rb +1 -0
  69. data/spec/support/dummies/conf/wrong_cap/recipes/.gitkeep +0 -0
  70. data/spec/units/cli/deploy_spec.rb +116 -0
  71. data/spec/units/cli/install_spec.rb +44 -0
  72. data/spec/units/cli/list_spec.rb +107 -0
  73. data/spec/units/constants_spec.rb +21 -0
  74. data/spec/units/interactors/add_applications_spec.rb +46 -0
  75. data/spec/units/interactors/cleanup_spec.rb +21 -0
  76. data/spec/units/interactors/clone_initial_repository_spec.rb +41 -0
  77. data/spec/units/interactors/clone_repository_spec.rb +122 -0
  78. data/spec/units/interactors/copy_environment_file_spec.rb +80 -0
  79. data/spec/units/interactors/create_capfile_spec.rb +77 -0
  80. data/spec/units/interactors/create_deploy_file_spec.rb +70 -0
  81. data/spec/units/interactors/create_run_dirs_spec.rb +47 -0
  82. data/spec/units/interactors/identify_repository_location_spec.rb +49 -0
  83. data/spec/units/interactors/identify_repository_type_spec.rb +85 -0
  84. data/spec/units/interactors/run_bundle_install_spec.rb +60 -0
  85. data/spec/units/interactors/run_capistrano_spec.rb +92 -0
  86. data/spec/units/organizers/deploy_spec.rb +28 -0
  87. data/spec/units/organizers/install_spec.rb +13 -0
  88. data/spec/units/organizers/list_spec.rb +24 -0
  89. metadata +179 -106
  90. data/.ruby-gemset +0 -1
  91. data/.travis.yml +0 -17
  92. data/bin/pulsar-utils +0 -5
  93. data/lib/pulsar/commands/all.rb +0 -6
  94. data/lib/pulsar/commands/init.rb +0 -23
  95. data/lib/pulsar/commands/list.rb +0 -19
  96. data/lib/pulsar/commands/main.rb +0 -64
  97. data/lib/pulsar/commands/utils.rb +0 -14
  98. data/lib/pulsar/generators/init_repo/Gemfile +0 -7
  99. data/lib/pulsar/generators/init_repo/apps/base.rb +0 -41
  100. data/lib/pulsar/generators/init_repo/apps/your_app/defaults.rb +0 -9
  101. data/lib/pulsar/generators/init_repo/apps/your_app/production.rb +0 -12
  102. data/lib/pulsar/generators/init_repo/apps/your_app/recipes/custom_recipe.rb +0 -14
  103. data/lib/pulsar/generators/init_repo/apps/your_app/staging.rb +0 -12
  104. data/lib/pulsar/generators/init_repo/recipes/generic/cleanup.rb +0 -50
  105. data/lib/pulsar/generators/init_repo/recipes/generic/utils.rb +0 -9
  106. data/lib/pulsar/helpers/all.rb +0 -8
  107. data/lib/pulsar/helpers/capistrano.rb +0 -47
  108. data/lib/pulsar/helpers/clamp.rb +0 -223
  109. data/lib/pulsar/helpers/path.rb +0 -71
  110. data/lib/pulsar/helpers/shell.rb +0 -31
  111. data/lib/pulsar/options/all.rb +0 -6
  112. data/lib/pulsar/options/conf_repo.rb +0 -41
  113. data/lib/pulsar/options/shared.rb +0 -15
  114. data/spec/pulsar/commands/init_spec.rb +0 -10
  115. data/spec/pulsar/commands/list_spec.rb +0 -127
  116. data/spec/pulsar/commands/main_spec.rb +0 -360
  117. data/spec/pulsar/commands/utils_spec.rb +0 -33
  118. data/spec/pulsar/helpers/capistrano_spec.rb +0 -70
  119. data/spec/pulsar/helpers/clamp_spec.rb +0 -105
  120. data/spec/pulsar/helpers/shell_spec.rb +0 -11
  121. data/spec/support/dummies/dummy_app/config.ru +0 -3
  122. data/spec/support/dummies/dummy_conf/Gemfile +0 -4
  123. data/spec/support/dummies/dummy_conf/apps/base.rb +0 -46
  124. data/spec/support/dummies/dummy_conf/apps/dummy_app/custom_stage.rb +0 -5
  125. data/spec/support/dummies/dummy_conf/apps/dummy_app/defaults.rb +0 -7
  126. data/spec/support/dummies/dummy_conf/apps/dummy_app/production.rb +0 -5
  127. data/spec/support/dummies/dummy_conf/apps/dummy_app/recipes/custom_recipe.rb +0 -1
  128. data/spec/support/dummies/dummy_conf/apps/dummy_app/recipes/production/custom_recipe.rb +0 -1
  129. data/spec/support/dummies/dummy_conf/apps/dummy_app/recipes/staging/custom_recipe.rb +0 -1
  130. data/spec/support/dummies/dummy_conf/apps/dummy_app/staging.rb +0 -5
  131. data/spec/support/dummies/dummy_conf/apps/other_dummy_app/custom_stage.rb +0 -5
  132. data/spec/support/dummies/dummy_conf/apps/other_dummy_app/defaults.rb +0 -7
  133. data/spec/support/dummies/dummy_conf/apps/other_dummy_app/production.rb +0 -5
  134. data/spec/support/dummies/dummy_conf/apps/other_dummy_app/staging.rb +0 -5
  135. data/spec/support/dummies/dummy_conf/recipes/generic/recipe.rb +0 -3
  136. data/spec/support/modules/helpers.rb +0 -85
  137. data/spec/support/modules/output_capture.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85ff94bd2e09cdb4b78e52f893e1325e57040096
4
- data.tar.gz: 6a9555c19b9dd1a2fac4da55d898cc508ef802c3
3
+ metadata.gz: 921914916a66521e123a39711c7b62f7336cb901
4
+ data.tar.gz: 15e6595fcaa432a63321128e515cfd2141af9ec3
5
5
  SHA512:
6
- metadata.gz: b192211345aeee06d45a10c4123e5294af7baf776bdde2c0a1772f7dc6fc41060c8592671cf10b400d9bee79a4876a61f616252a55ee08400b6a318ee9260086
7
- data.tar.gz: a3acf3cea61a0431d419cc92781515695ed92d183cb1f3bef408ff46268e982bc6122f11b2e29b0e5429a9e6562c053a8a152788de153f9a0409a9ac1507fac2
6
+ metadata.gz: f7c0a941f8cce88aadf721b9d5dda5a98169be84853447dfd061046c3a6475fc667eb519019eb324b65922e93814d7b85ac01ca69994c8af82dba23e8d1bfe0b
7
+ data.tar.gz: e508f7f5149735f13802e5506c33ae592a3ffb08a11eb2254b3fea1d6b2d08560b05a056ebeadab78f1689db59514754e1f9224e06de6078d5ef00c1db9910e1
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .DS_Store
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
data/.rspec CHANGED
@@ -1 +1,2 @@
1
1
  --color
2
+ --format documentation
data/.rubocop.yml CHANGED
@@ -1,5 +1,155 @@
1
+ Style/FrozenStringLiteralComment:
2
+ Enabled: false
3
+
4
+ Metrics/ModuleLength:
5
+ Exclude:
6
+ - "spec/**/*.rb"
7
+
8
+ Metrics/BlockLength:
9
+ Exclude:
10
+ - "spec/**/*.rb"
11
+
12
+ # Relaxed.Ruby.Style
13
+
14
+ Style/Alias:
15
+ Enabled: false
16
+ StyleGuide: http://relaxed.ruby.style/#stylealias
17
+
18
+ Style/BeginBlock:
19
+ Enabled: false
20
+ StyleGuide: http://relaxed.ruby.style/#stylebeginblock
21
+
22
+ Style/BlockDelimiters:
23
+ Enabled: false
24
+ StyleGuide: http://relaxed.ruby.style/#styleblockdelimiters
25
+
1
26
  Style/Documentation:
2
27
  Enabled: false
28
+ StyleGuide: http://relaxed.ruby.style/#styledocumentation
29
+
30
+ Style/DotPosition:
31
+ Enabled: false
32
+ StyleGuide: http://relaxed.ruby.style/#styledotposition
33
+
34
+ Style/DoubleNegation:
35
+ Enabled: false
36
+ StyleGuide: http://relaxed.ruby.style/#styledoublenegation
37
+
38
+ Style/EndBlock:
39
+ Enabled: false
40
+ StyleGuide: http://relaxed.ruby.style/#styleendblock
41
+
42
+ Style/FormatString:
43
+ Enabled: false
44
+ StyleGuide: http://relaxed.ruby.style/#styleformatstring
45
+
46
+ Style/IfUnlessModifier:
47
+ Enabled: false
48
+ StyleGuide: http://relaxed.ruby.style/#styleifunlessmodifier
49
+
50
+ Style/Lambda:
51
+ Enabled: false
52
+ StyleGuide: http://relaxed.ruby.style/#stylelambda
53
+
54
+ Style/ModuleFunction:
55
+ Enabled: false
56
+ StyleGuide: http://relaxed.ruby.style/#stylemodulefunction
57
+
58
+ Style/MultilineBlockChain:
59
+ Enabled: false
60
+ StyleGuide: http://relaxed.ruby.style/#stylemultilineblockchain
61
+
62
+ Style/NegatedIf:
63
+ Enabled: false
64
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedif
65
+
66
+ Style/NegatedWhile:
67
+ Enabled: false
68
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedwhile
69
+
70
+ Style/ParallelAssignment:
71
+ Enabled: false
72
+ StyleGuide: http://relaxed.ruby.style/#styleparallelassignment
73
+
74
+ Style/PercentLiteralDelimiters:
75
+ Enabled: false
76
+ StyleGuide: http://relaxed.ruby.style/#stylepercentliteraldelimiters
77
+
78
+ Style/PerlBackrefs:
79
+ Enabled: false
80
+ StyleGuide: http://relaxed.ruby.style/#styleperlbackrefs
81
+
82
+ Style/Semicolon:
83
+ Enabled: false
84
+ StyleGuide: http://relaxed.ruby.style/#stylesemicolon
85
+
86
+ Style/SignalException:
87
+ Enabled: false
88
+ StyleGuide: http://relaxed.ruby.style/#stylesignalexception
89
+
90
+ Style/SingleLineBlockParams:
91
+ Enabled: false
92
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelineblockparams
93
+
94
+ Style/SingleLineMethods:
95
+ Enabled: false
96
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelinemethods
97
+
98
+ Style/SpaceBeforeBlockBraces:
99
+ Enabled: false
100
+ StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
101
+
102
+ Style/SpaceInsideParens:
103
+ Enabled: false
104
+ StyleGuide: http://relaxed.ruby.style/#stylespaceinsideparens
3
105
 
4
106
  Style/SpecialGlobalVars:
5
107
  Enabled: false
108
+ StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
109
+
110
+ Style/StringLiterals:
111
+ Enabled: false
112
+ StyleGuide: http://relaxed.ruby.style/#stylestringliterals
113
+
114
+ Style/TrailingCommaInLiteral:
115
+ Enabled: false
116
+ StyleGuide: http://relaxed.ruby.style/#styletrailingcommainliteral
117
+
118
+ Style/WhileUntilModifier:
119
+ Enabled: false
120
+ StyleGuide: http://relaxed.ruby.style/#stylewhileuntilmodifier
121
+
122
+ Lint/AmbiguousRegexpLiteral:
123
+ Enabled: false
124
+ StyleGuide: http://relaxed.ruby.style/#lintambiguousregexpliteral
125
+
126
+ Lint/AssignmentInCondition:
127
+ Enabled: false
128
+ StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition
129
+
130
+ Metrics/AbcSize:
131
+ Enabled: false
132
+
133
+ Metrics/BlockNesting:
134
+ Enabled: false
135
+
136
+ Metrics/ClassLength:
137
+ Enabled: false
138
+
139
+ Metrics/ModuleLength:
140
+ Enabled: false
141
+
142
+ Metrics/CyclomaticComplexity:
143
+ Enabled: false
144
+
145
+ Metrics/LineLength:
146
+ Enabled: false
147
+
148
+ Metrics/MethodLength:
149
+ Enabled: false
150
+
151
+ Metrics/ParameterLists:
152
+ Enabled: false
153
+
154
+ Metrics/PerceivedComplexity:
155
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.0
1
+ 2.4.0
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 NebuLab
1
+ Copyright (c) 2017 Nebulab
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Pulsar [![Gem Version](https://badge.fury.io/rb/pulsar.svg)](http://badge.fury.io/rb/pulsar) [![Build Status](https://travis-ci.org/nebulab/pulsar.svg?branch=master)](https://travis-ci.org/nebulab/pulsar) [![Test Coverage](https://codeclimate.com/github/nebulab/pulsar/badges/coverage.svg)](https://codeclimate.com/github/nebulab/pulsar) [![Code Climate](https://codeclimate.com/github/nebulab/pulsar/badges/gpa.svg)](https://codeclimate.com/github/nebulab/pulsar)
1
+ # Pulsar
2
2
 
3
3
  The easy [Capistrano](https://rubygems.org/gems/capistrano) deploy and configuration manager.
4
4
 
@@ -11,272 +11,11 @@ have all your application dependencies installed). This lets you integrate Pulsa
11
11
  Some of the benefits of using Pulsar:
12
12
  * No capistrano configurations in the application code
13
13
  * No need to have the application locally to deploy
14
- * Multistage support by default
15
14
  * Every recipe can be shared between all applications
16
15
  * Can easily be integrated with other tools
17
16
  * Write the least possible code to deploy
18
17
 
19
- ## Installation
18
+ ## Capistrano support
20
19
 
21
- The most useful way of installing Pulsar is as a system gem:
22
-
23
- ```bash
24
- $ gem install pulsar
25
- ```
26
-
27
- This will install two commands: `pulsar` and `pulsar-utils`. The first command is required to run capistrano,
28
- the other is for everything else.
29
-
30
- ---
31
-
32
- You'll need to create your own configuration repo:
33
-
34
- ```bash
35
- $ pulsar-utils init ~/Desktop/pulsar-conf
36
- ```
37
-
38
- This will create a basic start point for building your configuration repository. As soon as you're done configuring
39
- you should consider storing this folder as an actual git repository.
40
-
41
- Here it is possible to see how this configuration repository will look like: [Pulsar Conf Demo](http://github.com/nebulab/pulsar-conf-demo)
42
-
43
- **NOTE**: Pulsar only supports git and *nix systems.
44
-
45
- ## Configuration
46
-
47
- This is an example repository configuration layout:
48
-
49
- ```bash
50
- pulsar-conf/
51
- |── Gemfile
52
- ├── Gemfile.lock
53
- ├── apps
54
- │   ├── base.rb
55
- │   └── my_application
56
- │      ├── defaults.rb
57
- │      ├── production.rb
58
- │      ├── recipes
59
- │      │   └── custom_recipe.rb
60
- │      └── staging.rb
61
- └── recipes
62
- ├── generic
63
- │   ├── cleanup.rb
64
- │   ├── maintenance_mode.rb
65
- │   ├── notify.rb
66
- │   └── utils.rb
67
- ├── rails
68
- │   ├── passenger.rb
69
- │   ├── repair_permissions.rb
70
- │   ├── symlink_configs.rb
71
- │   ├── unicorn.rb
72
- │   └── whenever.rb
73
- └── spree_1
74
- └── symlink_assets.rb
75
- ```
76
-
77
- Pulsar uses these files to build capistrano configurations on the fly, depending on how you invoke the `pulsar` command.
78
- Since Pulsar it's basically a capistrano wrapper, the content of these files is plain old capistrano syntax.
79
-
80
- ### _apps_ directory
81
-
82
- This directory contains your application configurations. You'll have one directory per application.
83
-
84
- * `base.rb` has configurations that are shared by all applications
85
- * `my_application/defaults.rb` includes configuration shared by every stage of the application
86
- * `my_application/staging.rb` and `my_application/production.rb` files include stage configurations
87
- * `my_application/recipes/` are recipes that are always included for that application (no need to use `load_recipes`)
88
-
89
- ### _recipes_ directory
90
-
91
- This directory contains your recipes. You can create any number of directories to organize your recipes.
92
- To load a recipe from your configurations you can use the `load_recipes` helper:
93
-
94
- ```ruby
95
- #
96
- # Somewhere inside apps/
97
- #
98
- load_recipes do
99
- rails :repair_permissions, :unicorn
100
- generic :cleanup, :utils
101
- end
102
- ```
103
-
104
- This will use capistrano's `load` method to include recipes from `rails/` and `generic/`.
105
-
106
- ---
107
-
108
- Another way to include your recipes is by using the `Gemfile`. Many gems already include custom recipes for capistrano so
109
- you just need to require those. An example with [Whenever](https://github.com/javan/whenever):
110
-
111
- ```ruby
112
- #
113
- # Inside Gemfile
114
- #
115
- gem 'whenever'
116
-
117
- #
118
- # Inside recipes/rails/whenever.rb
119
- #
120
- require 'whenever/capistrano'
121
-
122
- set :whenever_command, "bundle exec whenever"
123
-
124
- #
125
- # Somewhere inside apps/
126
- #
127
- load_recipes do
128
- rails :whenever
129
- end
130
- ```
131
-
132
- ---
133
-
134
- You can specify some recipes to be loaded only when you run Pulsar from inside a Rack application directory.
135
- This is useful with recipes that require something inside that directory (like retrieving the database/assets
136
- from a staging environment).
137
-
138
- You can do that like this:
139
-
140
- ```ruby
141
- #
142
- # Somewhere inside apps/
143
- #
144
-
145
- #
146
- # These recipes will be available only if you're running
147
- # Pulsar inside a Rack application (like Rails) directory
148
- #
149
- load_recipes(app_only: true) do
150
- rails :assets_pull, :database_pull
151
- end
152
- ```
153
-
154
- ### Loading the repository
155
-
156
- Once the repository is ready, you'll need to tell Pulsar where it is. The repository location can be specified either
157
- as a full git path or a github repository path (`gh-user/pulsar-conf`).
158
-
159
- Since Pulsar requires the repository for everything, there are multiple ways to store this information so that
160
- you don't have to type it everytime. You can also use local repository, which is useful while developing your
161
- deployment.
162
-
163
- You have three possibilities:
164
-
165
- * `-c` command line option
166
- * `PULSAR_CONF_REPO` environment variable
167
- * `~/.pulsar/config` configuration file
168
-
169
- The fastest way is probably the `.pulsar/config` file inside your home directory:
170
-
171
- ```bash
172
- #
173
- # Inside ~/.pulsar/config
174
- #
175
- PULSAR_CONF_REPO="gh-user/pulsar-conf"
176
-
177
- #
178
- # You can use local repository for development so you don't need to push changes every time
179
- #
180
- # PULSAR_CONF_REPO="/full/path/to/repository"
181
-
182
- #
183
- # Also supported
184
- #
185
- # PULSAR_CONF_REPO="git://github.com/gh-user/pulsar-conf.git"
186
- ```
187
-
188
- Pulsar will read this file and set the environment variables properly.
189
-
190
- ---
191
-
192
- If you don't want to add another file to your home directory you can export the variables yourself:
193
-
194
- ```bash
195
- #
196
- # Inside ~/.bash_profile or ~/.zshrc
197
- #
198
- export PULSAR_CONF_REPO="gh-user/pulsar-conf"
199
- ```
200
-
201
- ## Usage
202
-
203
- After the repository is ready, running Pulsar is straightforward. To deploy `my_application` to `production`:
204
-
205
- ```bash
206
- $ pulsar my_application production
207
- ```
208
-
209
- As a rule of thumb, anything that's added at the end of the command is passed to capistrano. Some examples:
210
-
211
- ```bash
212
- $ pulsar my_application production --tasks
213
-
214
- $ pulsar my_application staging deploy:migrations
215
-
216
- $ pulsar my_application staging shell
217
-
218
- #
219
- # Deploy multiple apps by using commas
220
- #
221
- $ pulsar my_app1,my_app2,my_app3 production
222
-
223
- #
224
- # Deploy multiple apps by using pattern matching
225
- # (uses Dir.glob)
226
- #
227
- $ pulsar my_app* production
228
- # or
229
- $ pulsar *worker staging
230
-
231
- ```
232
-
233
- ### Running inside a Rack application (e.g. Ruby on Rails application)
234
-
235
- In case you frequently work from a Rack application and would like a workflow similar to that of capistrano, Pulsar
236
- supports running from inside a Rack application directory. If you use this a lot, you should consider installing
237
- Pulsar via the application `Gemfile`.
238
-
239
- When deploying from inside a Rack application you can omit the application name:
240
-
241
- ```bash
242
- $ cd /path/to/my_application
243
-
244
- $ pulsar production
245
-
246
- $ pulsar staging deploy:migrations
247
- ```
248
-
249
- ---
250
-
251
- If you need a particular configuration for an application you can store a `.pulsar` file inside the application
252
- directory:
253
-
254
- ```bash
255
- #
256
- # Inside /path/to/my_application/.pulsar
257
- #
258
- PULSAR_CONF_REPO="gh-user/pulsar-conf"
259
-
260
- #
261
- # If the application directory name is different than what
262
- # you configured inside the Pulsar configuration repository
263
- #
264
- # PULSAR_APP_NAME="my-application"
265
- ```
266
-
267
- ## Integrations
268
-
269
- Pulsar is easy to integrate, you just need access to the configurations repository and the ability to
270
- run a command.
271
-
272
- ### Hubot
273
-
274
- https://gist.github.com/mtylty/5324075
275
-
276
- ## Contributing
277
-
278
- 1. Fork it
279
- 2. Create your feature branch (`git checkout -b my-new-feature`)
280
- 3. Commit your changes with tests (`git commit -am 'Add some feature'`)
281
- 4. Push to the branch (`git push origin my-new-feature`)
282
- 5. Create new Pull Request
20
+ This version of Pulsar, version `1.0.0` only supports Capistrano v3. If you're looking for Capistrano v2 support you can
21
+ use Pulsar version `0.3.5` but, take care, that version is not maintained anymore.