Class: EY::Serverside::Paths
- Inherits:
-
Object
- Object
- EY::Serverside::Paths
- Defined in:
- lib/engineyard-serverside/paths.rb
Defined Under Namespace
Modules: LegacyHelpers
Constant Summary collapse
- MAINTENANCE_CANDIDATES =
Maintenance page candidates in order of search preference.
[ "public/maintenance.html.custom", "public/maintenance.html.tmp", "public/maintenance.html", "public/system/maintenance.html.default", ]
- DEFAULT_MAINTENANCE_PAGE =
This one is guaranteed to exist.
Pathname.new("default_maintenance_page.html").(File.dirname(__FILE__))
Instance Attribute Summary collapse
-
#deploy_root ⇒ Object
readonly
Returns the value of attribute deploy_root.
-
#home ⇒ Object
readonly
Returns the value of attribute home.
Class Method Summary collapse
-
.def_path(name, parts) ⇒ Object
Define methods that get us paths.
Instance Method Summary collapse
-
#active_release ⇒ Object
If no active release is defined, use current.
- #all_releases ⇒ Object
- #deploy_hook(hook_name) ⇒ Object
- #deploy_key ⇒ Object
- #deployed? ⇒ Boolean
- #executable_deploy_hook(hook_name) ⇒ Object
-
#initialize(opts) ⇒ Paths
constructor
A new instance of Paths.
-
#latest_release ⇒ Object
deploy_root/releases/<latest timestamp>.
- #maintenance_page_candidates ⇒ Object
- #new_release! ⇒ Object
-
#path(root, *parts) ⇒ Object
Load a path given a root and more parts.
-
#previous_release(from_release = latest_release) ⇒ Object
deploy_root/releases/<release before argument release path>.
- #previous_revision ⇒ Object
- #release_dirname ⇒ Object
- #repository_cache ⇒ Object
- #rollback ⇒ Object
- #ssh_wrapper ⇒ Object
Constructor Details
#initialize(opts) ⇒ Paths
Returns a new instance of Paths.
90 91 92 93 94 95 96 97 |
# File 'lib/engineyard-serverside/paths.rb', line 90 def initialize(opts) @opts = opts @home = Pathname.new(@opts[:home] || ENV['HOME']) @app_name = @opts[:app_name] @active_release = Pathname.new(@opts[:active_release]) if @opts[:active_release] @repository_cache = Pathname.new(@opts[:repository_cache]) if @opts[:repository_cache] @deploy_root = Pathname.new(@opts[:deploy_root] || "/data/#{@app_name}") end |
Instance Attribute Details
#deploy_root ⇒ Object (readonly)
Returns the value of attribute deploy_root.
58 59 60 |
# File 'lib/engineyard-serverside/paths.rb', line 58 def deploy_root @deploy_root end |
#home ⇒ Object (readonly)
Returns the value of attribute home.
58 59 60 |
# File 'lib/engineyard-serverside/paths.rb', line 58 def home @home end |
Class Method Details
.def_path(name, parts) ⇒ Object
Define methods that get us paths
49 50 51 |
# File 'lib/engineyard-serverside/paths.rb', line 49 def self.def_path(name, parts) define_method(name.to_sym) { path(*parts) } end |
Instance Method Details
#active_release ⇒ Object
If no active release is defined, use current
108 109 110 |
# File 'lib/engineyard-serverside/paths.rb', line 108 def active_release @active_release || latest_release end |
#all_releases ⇒ Object
132 133 134 |
# File 'lib/engineyard-serverside/paths.rb', line 132 def all_releases @all_releases ||= Pathname.glob(releases.join('*')).sort end |
#deploy_hook(hook_name) ⇒ Object
120 121 122 |
# File 'lib/engineyard-serverside/paths.rb', line 120 def deploy_hook(hook_name) path(:active_release, 'deploy', "#{hook_name}.rb") end |
#deploy_key ⇒ Object
112 113 114 |
# File 'lib/engineyard-serverside/paths.rb', line 112 def deploy_key path(:home, '.ssh', "#{@app_name}-deploy-key") end |
#deployed? ⇒ Boolean
156 157 158 |
# File 'lib/engineyard-serverside/paths.rb', line 156 def deployed? !!latest_release end |
#executable_deploy_hook(hook_name) ⇒ Object
124 125 126 |
# File 'lib/engineyard-serverside/paths.rb', line 124 def executable_deploy_hook(hook_name) path(:active_release, 'deploy', "#{hook_name}") end |
#latest_release ⇒ Object
deploy_root/releases/<latest timestamp>
152 153 154 |
# File 'lib/engineyard-serverside/paths.rb', line 152 def latest_release all_releases.last end |
#maintenance_page_candidates ⇒ Object
160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/engineyard-serverside/paths.rb', line 160 def maintenance_page_candidates if latest_release candidates = MAINTENANCE_CANDIDATES.map do |file| path(:latest_release, file) end else candidates = [] end candidates << DEFAULT_MAINTENANCE_PAGE candidates end |
#new_release! ⇒ Object
103 104 105 |
# File 'lib/engineyard-serverside/paths.rb', line 103 def new_release! @active_release = path(:releases, release_dirname) end |
#path(root, *parts) ⇒ Object
Load a path given a root and more parts
54 55 56 |
# File 'lib/engineyard-serverside/paths.rb', line 54 def path(root, *parts) send(root).join(*parts) end |
#previous_release(from_release = latest_release) ⇒ Object
deploy_root/releases/<release before argument release path>
137 138 139 140 141 142 143 144 |
# File 'lib/engineyard-serverside/paths.rb', line 137 def previous_release(from_release=latest_release) index = all_releases.index(from_release) if index && index > 0 all_releases[index-1] else nil end end |
#previous_revision ⇒ Object
146 147 148 149 |
# File 'lib/engineyard-serverside/paths.rb', line 146 def previous_revision rel = previous_release(active_release) rel && rel.join('REVISION') end |
#release_dirname ⇒ Object
99 100 101 |
# File 'lib/engineyard-serverside/paths.rb', line 99 def release_dirname Time.now.utc.strftime("%Y%m%d%H%M%S") end |
#repository_cache ⇒ Object
128 129 130 |
# File 'lib/engineyard-serverside/paths.rb', line 128 def repository_cache @repository_cache ||= default_repository_cache end |
#rollback ⇒ Object
172 173 174 175 176 177 178 |
# File 'lib/engineyard-serverside/paths.rb', line 172 def rollback if deployed? && previous_release self.class.new(@opts.dup.merge(:active_release => previous_release)) else nil end end |
#ssh_wrapper ⇒ Object
116 117 118 |
# File 'lib/engineyard-serverside/paths.rb', line 116 def ssh_wrapper path(:shared_config, "#{@app_name}-ssh-wrapper") end |