summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2020-08-12 14:16:39 -0700
committerTim Smith <tsmith84@gmail.com>2020-08-12 14:24:06 -0700
commit7e2d8e6a1b23cf459becfaaf0525a930bb2bd9e3 (patch)
tree60636cf607d266498c3424fa3e24a1ce06ef7a97
parent9ee2a128e8765aa206c7595e404123737696147b (diff)
downloadchef-zero-7e2d8e6a1b23cf459becfaaf0525a930bb2bd9e3.tar.gz
Optimize requires for non-omnibus installs
require is quite slow in Ruby and doing requires for things you've already required is also slow. We've used this simple hack in Chef to speed up our requires. In the omnibus installs we patch how rubygems works to make this somewhat pointless, but this will help non-omnibus installs Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/chef_zero/data_store/raw_file_store.rb2
-rw-r--r--lib/chef_zero/endpoints/acl_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/acls_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/actor_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/actors_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/authenticate_user_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/container_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/containers_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/cookbook_version_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/cookbooks_base.rb2
-rw-r--r--lib/chef_zero/endpoints/data_bag_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/data_bag_item_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/data_bags_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_cookbook_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_nodes_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_recipes_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/environment_role_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/group_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/groups_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/license_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/node_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/node_identifiers_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/nodes_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/not_found_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_association_request_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_association_requests_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_user_base.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_user_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_users_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organization_validator_key_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/organizations_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/policy_group_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/policy_group_policy_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/policy_groups_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/principal_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/rest_list_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/rest_object_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/role_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/role_environments_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/sandbox_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/sandboxes_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/search_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/system_recovery_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/universe_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/user_association_request_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/user_association_requests_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/user_organizations_endpoint.rb2
-rw-r--r--lib/chef_zero/rest_router.rb2
-rw-r--r--lib/chef_zero/rspec.rb2
-rw-r--r--lib/chef_zero/server.rb12
-rw-r--r--lib/chef_zero/socketless_server_map.rb2
57 files changed, 62 insertions, 62 deletions
diff --git a/lib/chef_zero/data_store/raw_file_store.rb b/lib/chef_zero/data_store/raw_file_store.rb
index b284a09..fbe6888 100644
--- a/lib/chef_zero/data_store/raw_file_store.rb
+++ b/lib/chef_zero/data_store/raw_file_store.rb
@@ -19,7 +19,7 @@
require_relative "data_already_exists_error"
require_relative "data_not_found_error"
require_relative "interface_v2"
-require "fileutils"
+require "fileutils" unless defined?(FileUtils)
module ChefZero
module DataStore
diff --git a/lib/chef_zero/endpoints/acl_endpoint.rb b/lib/chef_zero/endpoints/acl_endpoint.rb
index 328512a..89a85f7 100644
--- a/lib/chef_zero/endpoints/acl_endpoint.rb
+++ b/lib/chef_zero/endpoints/acl_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/acl_path"
diff --git a/lib/chef_zero/endpoints/acls_endpoint.rb b/lib/chef_zero/endpoints/acls_endpoint.rb
index 2ed5b78..f1932de 100644
--- a/lib/chef_zero/endpoints/acls_endpoint.rb
+++ b/lib/chef_zero/endpoints/acls_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/data_normalizer"
require_relative "../chef_data/acl_path"
diff --git a/lib/chef_zero/endpoints/actor_endpoint.rb b/lib/chef_zero/endpoints/actor_endpoint.rb
index ad32a28..aed6cfc 100644
--- a/lib/chef_zero/endpoints/actor_endpoint.rb
+++ b/lib/chef_zero/endpoints/actor_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/actors_endpoint.rb b/lib/chef_zero/endpoints/actors_endpoint.rb
index 79a72a8..a96e945 100644
--- a/lib/chef_zero/endpoints/actors_endpoint.rb
+++ b/lib/chef_zero/endpoints/actors_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_list_endpoint"
module ChefZero
diff --git a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
index dfde6e4..96a7097 100644
--- a/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
+++ b/lib/chef_zero/endpoints/authenticate_user_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/container_endpoint.rb b/lib/chef_zero/endpoints/container_endpoint.rb
index 04724c1..e21ad3a 100644
--- a/lib/chef_zero/endpoints/container_endpoint.rb
+++ b/lib/chef_zero/endpoints/container_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/containers_endpoint.rb b/lib/chef_zero/endpoints/containers_endpoint.rb
index 8a6a81b..1015e80 100644
--- a/lib/chef_zero/endpoints/containers_endpoint.rb
+++ b/lib/chef_zero/endpoints/containers_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_list_endpoint"
module ChefZero
diff --git a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
index 2cad5ea..6953f20 100644
--- a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
+++ b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../rest_error_response"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/cookbooks_base.rb b/lib/chef_zero/endpoints/cookbooks_base.rb
index 67061c6..9689584 100644
--- a/lib/chef_zero/endpoints/cookbooks_base.rb
+++ b/lib/chef_zero/endpoints/cookbooks_base.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/data_bag_endpoint.rb b/lib/chef_zero/endpoints/data_bag_endpoint.rb
index 6b41c7a..d59d903 100644
--- a/lib/chef_zero/endpoints/data_bag_endpoint.rb
+++ b/lib/chef_zero/endpoints/data_bag_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_list_endpoint"
require_relative "data_bag_item_endpoint"
require_relative "../rest_error_response"
diff --git a/lib/chef_zero/endpoints/data_bag_item_endpoint.rb b/lib/chef_zero/endpoints/data_bag_item_endpoint.rb
index 0c6f3e2..05613ee 100644
--- a/lib/chef_zero/endpoints/data_bag_item_endpoint.rb
+++ b/lib/chef_zero/endpoints/data_bag_item_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "data_bag_item_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/data_bags_endpoint.rb b/lib/chef_zero/endpoints/data_bags_endpoint.rb
index ec07343..3475e87 100644
--- a/lib/chef_zero/endpoints/data_bags_endpoint.rb
+++ b/lib/chef_zero/endpoints/data_bags_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_list_endpoint"
module ChefZero
diff --git a/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb
index d88c198..2c0f377 100644
--- a/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_cookbook_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "cookbooks_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
index e09d704..4cb8839 100644
--- a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../rest_error_response"
diff --git a/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb
index 07a5a3b..d381c4b 100644
--- a/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_cookbooks_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "cookbooks_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/environment_endpoint.rb b/lib/chef_zero/endpoints/environment_endpoint.rb
index d2a6d86..5121038 100644
--- a/lib/chef_zero/endpoints/environment_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/environment_nodes_endpoint.rb b/lib/chef_zero/endpoints/environment_nodes_endpoint.rb
index 7f0dbab..f2970c2 100644
--- a/lib/chef_zero/endpoints/environment_nodes_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_nodes_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/environment_recipes_endpoint.rb b/lib/chef_zero/endpoints/environment_recipes_endpoint.rb
index 1d69d99..2940ad5 100644
--- a/lib/chef_zero/endpoints/environment_recipes_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_recipes_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "cookbooks_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/environment_role_endpoint.rb b/lib/chef_zero/endpoints/environment_role_endpoint.rb
index b0d0cf5..77633b1 100644
--- a/lib/chef_zero/endpoints/environment_role_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_role_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "cookbooks_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/group_endpoint.rb b/lib/chef_zero/endpoints/group_endpoint.rb
index a831dbc..48f8f20 100644
--- a/lib/chef_zero/endpoints/group_endpoint.rb
+++ b/lib/chef_zero/endpoints/group_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/groups_endpoint.rb b/lib/chef_zero/endpoints/groups_endpoint.rb
index 424fe13..01da198 100644
--- a/lib/chef_zero/endpoints/groups_endpoint.rb
+++ b/lib/chef_zero/endpoints/groups_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_list_endpoint"
module ChefZero
diff --git a/lib/chef_zero/endpoints/license_endpoint.rb b/lib/chef_zero/endpoints/license_endpoint.rb
index 949a661..1e5aece 100644
--- a/lib/chef_zero/endpoints/license_endpoint.rb
+++ b/lib/chef_zero/endpoints/license_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/node_endpoint.rb b/lib/chef_zero/endpoints/node_endpoint.rb
index e311871..206ee28 100644
--- a/lib/chef_zero/endpoints/node_endpoint.rb
+++ b/lib/chef_zero/endpoints/node_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/node_identifiers_endpoint.rb b/lib/chef_zero/endpoints/node_identifiers_endpoint.rb
index 2081593..6407557 100644
--- a/lib/chef_zero/endpoints/node_identifiers_endpoint.rb
+++ b/lib/chef_zero/endpoints/node_identifiers_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require "uuidtools"
diff --git a/lib/chef_zero/endpoints/nodes_endpoint.rb b/lib/chef_zero/endpoints/nodes_endpoint.rb
index 513b147..19aed7a 100644
--- a/lib/chef_zero/endpoints/nodes_endpoint.rb
+++ b/lib/chef_zero/endpoints/nodes_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/not_found_endpoint.rb b/lib/chef_zero/endpoints/not_found_endpoint.rb
index 160d4a2..2fd4e60 100644
--- a/lib/chef_zero/endpoints/not_found_endpoint.rb
+++ b/lib/chef_zero/endpoints/not_found_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
module ChefZero
module Endpoints
diff --git a/lib/chef_zero/endpoints/organization_association_request_endpoint.rb b/lib/chef_zero/endpoints/organization_association_request_endpoint.rb
index 6243a6c..d4e0dac 100644
--- a/lib/chef_zero/endpoints/organization_association_request_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_association_request_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb b/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb
index d16a8b7..4b4b8cf 100644
--- a/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_association_requests_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb b/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb
index ba8e13a..51f05cf 100644
--- a/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_authenticate_user_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_endpoint.rb b/lib/chef_zero/endpoints/organization_endpoint.rb
index a7f190d..7f536d6 100644
--- a/lib/chef_zero/endpoints/organization_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_user_base.rb b/lib/chef_zero/endpoints/organization_user_base.rb
index 8b806c1..eed5c6e 100644
--- a/lib/chef_zero/endpoints/organization_user_base.rb
+++ b/lib/chef_zero/endpoints/organization_user_base.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_user_endpoint.rb b/lib/chef_zero/endpoints/organization_user_endpoint.rb
index f29bdce..75f82e7 100644
--- a/lib/chef_zero/endpoints/organization_user_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_user_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/organization_users_endpoint.rb b/lib/chef_zero/endpoints/organization_users_endpoint.rb
index 7a26fa1..e77c6ba 100644
--- a/lib/chef_zero/endpoints/organization_users_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_users_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "organization_user_base"
diff --git a/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb b/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb
index 11e535a..49fcd54 100644
--- a/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb
+++ b/lib/chef_zero/endpoints/organization_validator_key_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require "uuidtools"
diff --git a/lib/chef_zero/endpoints/organizations_endpoint.rb b/lib/chef_zero/endpoints/organizations_endpoint.rb
index aa5c8e2..84e9388 100644
--- a/lib/chef_zero/endpoints/organizations_endpoint.rb
+++ b/lib/chef_zero/endpoints/organizations_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require "uuidtools"
diff --git a/lib/chef_zero/endpoints/policy_group_endpoint.rb b/lib/chef_zero/endpoints/policy_group_endpoint.rb
index 5e4c2f5..371cfea 100644
--- a/lib/chef_zero/endpoints/policy_group_endpoint.rb
+++ b/lib/chef_zero/endpoints/policy_group_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb b/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb
index 401de58..8d1169a 100644
--- a/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb
+++ b/lib/chef_zero/endpoints/policy_group_policy_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/policy_groups_endpoint.rb b/lib/chef_zero/endpoints/policy_groups_endpoint.rb
index c22bf34..14a647b 100644
--- a/lib/chef_zero/endpoints/policy_groups_endpoint.rb
+++ b/lib/chef_zero/endpoints/policy_groups_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/principal_endpoint.rb b/lib/chef_zero/endpoints/principal_endpoint.rb
index b59a0c9..53f45e0 100644
--- a/lib/chef_zero/endpoints/principal_endpoint.rb
+++ b/lib/chef_zero/endpoints/principal_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../../chef_zero"
require_relative "../rest_base"
diff --git a/lib/chef_zero/endpoints/rest_list_endpoint.rb b/lib/chef_zero/endpoints/rest_list_endpoint.rb
index c410e54..9f51190 100644
--- a/lib/chef_zero/endpoints/rest_list_endpoint.rb
+++ b/lib/chef_zero/endpoints/rest_list_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/rest_object_endpoint.rb b/lib/chef_zero/endpoints/rest_object_endpoint.rb
index 22c9ee6..c89268d 100644
--- a/lib/chef_zero/endpoints/rest_object_endpoint.rb
+++ b/lib/chef_zero/endpoints/rest_object_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
require_relative "../rest_error_response"
diff --git a/lib/chef_zero/endpoints/role_endpoint.rb b/lib/chef_zero/endpoints/role_endpoint.rb
index acef570..ccaa26f 100644
--- a/lib/chef_zero/endpoints/role_endpoint.rb
+++ b/lib/chef_zero/endpoints/role_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/role_environments_endpoint.rb b/lib/chef_zero/endpoints/role_environments_endpoint.rb
index 15712d9..80c650a 100644
--- a/lib/chef_zero/endpoints/role_environments_endpoint.rb
+++ b/lib/chef_zero/endpoints/role_environments_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/sandbox_endpoint.rb b/lib/chef_zero/endpoints/sandbox_endpoint.rb
index 78d0f4b..1ba5663 100644
--- a/lib/chef_zero/endpoints/sandbox_endpoint.rb
+++ b/lib/chef_zero/endpoints/sandbox_endpoint.rb
@@ -1,6 +1,6 @@
require_relative "../rest_base"
require_relative "../rest_error_response"
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
module ChefZero
module Endpoints
diff --git a/lib/chef_zero/endpoints/sandboxes_endpoint.rb b/lib/chef_zero/endpoints/sandboxes_endpoint.rb
index 258344b..3eacfa5 100644
--- a/lib/chef_zero/endpoints/sandboxes_endpoint.rb
+++ b/lib/chef_zero/endpoints/sandboxes_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/search_endpoint.rb b/lib/chef_zero/endpoints/search_endpoint.rb
index 935da3d..91085ed 100644
--- a/lib/chef_zero/endpoints/search_endpoint.rb
+++ b/lib/chef_zero/endpoints/search_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
require_relative "../rest_error_response"
diff --git a/lib/chef_zero/endpoints/system_recovery_endpoint.rb b/lib/chef_zero/endpoints/system_recovery_endpoint.rb
index 8cf838a..7ca48ee 100644
--- a/lib/chef_zero/endpoints/system_recovery_endpoint.rb
+++ b/lib/chef_zero/endpoints/system_recovery_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/universe_endpoint.rb b/lib/chef_zero/endpoints/universe_endpoint.rb
index dc34bfe..27eb3c8 100644
--- a/lib/chef_zero/endpoints/universe_endpoint.rb
+++ b/lib/chef_zero/endpoints/universe_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "rest_object_endpoint"
require_relative "../chef_data/data_normalizer"
diff --git a/lib/chef_zero/endpoints/user_association_request_endpoint.rb b/lib/chef_zero/endpoints/user_association_request_endpoint.rb
index 4873722..9da680a 100644
--- a/lib/chef_zero/endpoints/user_association_request_endpoint.rb
+++ b/lib/chef_zero/endpoints/user_association_request_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb b/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb
index ff809e3..5135bc1 100644
--- a/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb
+++ b/lib/chef_zero/endpoints/user_association_requests_count_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/user_association_requests_endpoint.rb b/lib/chef_zero/endpoints/user_association_requests_endpoint.rb
index 114296c..4bd103c 100644
--- a/lib/chef_zero/endpoints/user_association_requests_endpoint.rb
+++ b/lib/chef_zero/endpoints/user_association_requests_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/endpoints/user_organizations_endpoint.rb b/lib/chef_zero/endpoints/user_organizations_endpoint.rb
index 505a504..c70e0cd 100644
--- a/lib/chef_zero/endpoints/user_organizations_endpoint.rb
+++ b/lib/chef_zero/endpoints/user_organizations_endpoint.rb
@@ -1,4 +1,4 @@
-require "ffi_yajl"
+require "ffi_yajl" unless defined?(FFI_Yajl)
require_relative "../rest_base"
module ChefZero
diff --git a/lib/chef_zero/rest_router.rb b/lib/chef_zero/rest_router.rb
index dc24bb3..5f00416 100644
--- a/lib/chef_zero/rest_router.rb
+++ b/lib/chef_zero/rest_router.rb
@@ -1,4 +1,4 @@
-require "pp"
+require "pp" unless defined?(PP)
module ChefZero
class RestRouter
diff --git a/lib/chef_zero/rspec.rb b/lib/chef_zero/rspec.rb
index 63cbecf..9bb15ca 100644
--- a/lib/chef_zero/rspec.rb
+++ b/lib/chef_zero/rspec.rb
@@ -1,4 +1,4 @@
-require "tempfile"
+require "tempfile" unless defined?(Tempfile)
require_relative "server"
require_relative "rest_request"
diff --git a/lib/chef_zero/server.rb b/lib/chef_zero/server.rb
index 89a320b..2d699aa 100644
--- a/lib/chef_zero/server.rb
+++ b/lib/chef_zero/server.rb
@@ -16,14 +16,14 @@
# limitations under the License.
#
-require "openssl"
+require "openssl" unless defined?(OpenSSL)
require "open-uri"
-require "rubygems"
-require "timeout"
-require "stringio"
+require "rubygems" unless defined?(Gem)
+require "timeout" unless defined?(Timeout)
+require "stringio" unless defined?(StringIO)
-require "rack"
-require "webrick"
+require "rack" unless defined?(Rack)
+require "webrick" unless defined?(WEBrick)
require "webrick/https"
require_relative "../chef_zero"
diff --git a/lib/chef_zero/socketless_server_map.rb b/lib/chef_zero/socketless_server_map.rb
index c7a208e..53ca476 100644
--- a/lib/chef_zero/socketless_server_map.rb
+++ b/lib/chef_zero/socketless_server_map.rb
@@ -17,7 +17,7 @@
#
require "thread"
-require "singleton"
+require "singleton" unless defined?(Singleton)
require_relative "dist"
module ChefZero