Вероятно, это будет звучать как отговорка, но это действительно зависит от драгоценного камня и его внутренних предметов. Я бы сказал, что было бы неплохо иметь в своем основном файле require
логику, которая требует специфичных для платформы файлов для вашего драгоценного камня на основе платформы. Например:
# a user requires your library
require 'that_awesome_gem'
# in your gem's lib/that_awesome_gem.rb
if PLATFORM.os_x? # or whatever
require 'that_awesome_gem/os_x/module1'
require 'that_awesome_gem/os_x/module2'
elsif PLATFORM.win?
require 'that_awesome_gem/win/module1'
require 'that_awesome_gem/win/module2'
end
Вы также можете разрешить пользователю указывать, какую версию он хочет, с помощью оператора require.
# lib/that_awesome_gem/os_x.rb
PLATFORM.set_manual(:os_x)
require 'that_awesome_gem'
# lib/that_awesome_gem/win.rb
PLATFORM.set_manual(:win)
require 'that_awesome_gem'
# in the user's app
require 'that_awesome_gem/os_x'
(Примечание: очевидно, что определение глобальной константы в вашем приложении не очень хорошая идея, но вы получите общую идею.:)