Class: VagrantPlugins::DockerProvider::Action::ShareFolders
- Inherits:
-
Object
- Object
- VagrantPlugins::DockerProvider::Action::ShareFolders
- Defined in:
- lib/docker-provider/action/share_folders.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, env) ⇒ ShareFolders
constructor
A new instance of ShareFolders.
-
#prepare_folders ⇒ Object
Prepares the shared folders by verifying they exist and creating them if they don’t.
-
#shared_folders ⇒ Object
This method returns an actual list of synced folders to create and their proper path.
Constructor Details
#initialize(app, env) ⇒ ShareFolders
Returns a new instance of ShareFolders.
5 6 7 |
# File 'lib/docker-provider/action/share_folders.rb', line 5 def initialize(app, env) @app = app end |
Instance Method Details
#call(env) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/docker-provider/action/share_folders.rb', line 9 def call(env) @env = env prepare_folders # FIXME: Check whether the container has already been created with # different synced folders and let the user know about it folders = [] shared_folders.each do |id, data| folders << { :name => id, :hostpath => File.(data[:hostpath], @env[:root_path]), :guestpath => data[:guestpath] } end @env[:synced_folders] = folders @app.call(env) end |
#prepare_folders ⇒ Object
Prepares the shared folders by verifying they exist and creating them if they don’t.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/docker-provider/action/share_folders.rb', line 43 def prepare_folders shared_folders.each do |id, | hostpath = Pathname.new([:hostpath]).(@env[:root_path]) if !hostpath.directory? && [:create] # Host path doesn't exist, so let's create it. @logger.debug("Host path doesn't exist, creating: #{hostpath}") begin hostpath.mkpath rescue Errno::EACCES raise Vagrant::Errors::SharedFolderCreateFailed, :path => hostpath.to_s end end end end |
#shared_folders ⇒ Object
This method returns an actual list of synced folders to create and their proper path.
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/docker-provider/action/share_folders.rb', line 30 def shared_folders {}.tap do |result| @env[:machine].config.vm.synced_folders.each do |id, data| # Ignore disabled shared folders next if data[:disabled] # This to prevent overwriting the actual shared folders data result[id] = data.dup end end end |