diff --git a/lib/pdk/generate/module.rb b/lib/pdk/generate/module.rb index a796a4715..8ff4bd73d 100644 --- a/lib/pdk/generate/module.rb +++ b/lib/pdk/generate/module.rb @@ -84,6 +84,8 @@ def self.invoke(opts = {}) begin if FileUtils.mv(temp_target_dir, target_dir) + Dir.chdir(target_dir) { PDK::Util::Bundler.ensure_bundle! } + PDK.logger.info(_('Module \'%{name}\' generated at path \'%{path}\', from template \'%{template_url}\'.') % { name: opts[:module_name], path: target_dir, template_url: template_url }) PDK.logger.info(_('In your module directory, add classes with the \'pdk new class\' command.')) end diff --git a/spec/unit/pdk/generate/module_spec.rb b/spec/unit/pdk/generate/module_spec.rb index f7ff33187..21242caff 100644 --- a/spec/unit/pdk/generate/module_spec.rb +++ b/spec/unit/pdk/generate/module_spec.rb @@ -58,6 +58,11 @@ } end + before(:each) do + allow(PDK::Util::Bundler).to receive(:ensure_bundle!) + allow(Dir).to receive(:chdir).with(target_dir).and_yield + end + context 'when the target module directory already exists' do before(:each) do allow(File).to receive(:exist?).with(target_dir).and_return(true) @@ -148,6 +153,12 @@ described_class.invoke(invoke_opts) end + it 'prepares the bundler environment so that it is ready immediately' do + allow(FileUtils).to receive(:mv).with(temp_target_dir, target_dir).and_return(true) + expect(PDK::Util::Bundler).to receive(:ensure_bundle!) + described_class.invoke(invoke_opts) + end + context 'when the move to the target directory fails due to invalid permissions' do before(:each) do allow(FileUtils).to receive(:mv).with(temp_target_dir, target_dir).and_raise(Errno::EACCES, 'permission denied')