Skip to content
This repository has been archived by the owner on Apr 7, 2018. It is now read-only.

Commit

Permalink
Merge pull request #219 from chef-cookbooks/autoload
Browse files Browse the repository at this point in the history
Auto install required Gems on load failures
  • Loading branch information
tas50 committed Dec 27, 2016
2 parents 1d06bcb + 225b114 commit 965d0c6
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 20 deletions.
10 changes: 8 additions & 2 deletions libraries/provider_database_sql_server.rb
Expand Up @@ -29,8 +29,14 @@ def load_current_resource
begin
require 'tiny_tds'
rescue LoadError
Chef::Log.fatal('Could not load the required tiny_tds gem. Make sure to install this in your wrapper cookbook')
raise
Chef::Log.info('Could not load the required tiny_tds gem. Installing now')

# Install required gem (will be compiled)
chef_gem 'tiny_tds' do
compile_time true
end

require 'tiny_tds'
end
@current_resource = Chef::Resource::Database.new(@new_resource.name)
@current_resource.database_name(@new_resource.database_name)
Expand Down
10 changes: 8 additions & 2 deletions libraries/provider_database_sql_server_user.rb
Expand Up @@ -29,8 +29,14 @@ def load_current_resource
begin
require 'tiny_tds'
rescue LoadError
Chef::Log.fatal('Could not load the required tiny_tds gem. Make sure to install this in your wrapper cookbook')
raise
Chef::Log.info('Could not load the required tiny_tds gem. Installing now')

# Install required gem (will be compiled)
chef_gem 'tiny_tds' do
compile_time true
end

require 'tiny_tds'
end
@current_resource = Chef::Resource::DatabaseUser.new(@new_resource.name)
@current_resource.username(@new_resource.name)
Expand Down
18 changes: 16 additions & 2 deletions libraries/provider_database_sqlite.rb
Expand Up @@ -29,8 +29,22 @@ def load_current_resource
begin
require 'sqlite3'
rescue LoadError
Chef::Log.fatal('Could not load the required sqlite3 gem. Make sure to include the database::sqlite recipe on your runlist')
raise
Chef::Log.info('Could not load the required sqlite3 gem. Installing now')

case node['platform_family']
when 'rhel', 'fedora'
package ['gcc', 'make', 'sqlite-devel', 'sqlite']
when 'debian', 'ubuntu'
package ['gcc', 'make', 'libsqlite3-dev', 'sqlite3']
end

# Install required gem (will be compiled)
chef_gem 'sqlite3' do
compile_time false
end

require 'sqlite3'

end
@current_resource = Chef::Resource::Database.new(@new_resource.name)
@current_resource.database_name(@new_resource.database_name)
Expand Down
15 changes: 1 addition & 14 deletions recipes/sqlite.rb
Expand Up @@ -16,17 +16,4 @@
# limitations under the License.
#

# Install required packages
case node['platform_family']
when 'rhel', 'fedora'
packages = ['gcc', 'make', 'sqlite-devel', 'sqlite']
when 'debian', 'ubuntu'
packages = ['gcc', 'make', 'libsqlite3-dev', 'sqlite3']
end

package packages

# Install required gem (will be compiled)
chef_gem 'sqlite3' do
compile_time false
end
Chef::Log.warn('The sqlite recipe has been deprecated. The gem will now be automatically installed as needed.')

0 comments on commit 965d0c6

Please sign in to comment.