```ruby
require "gnucash/account"
require "gnucash/account_transaction"
require "gnucash/book"
require "gnucash/transaction"
require "gnucash/value"
require "gnucash/version"

# Namespace module for gnucash gem functionality
module Gnucash
  # Open a GnuCash book from file.
  # The file can be either a plain-text XML file or a gzipped XML file.
  # === Arguments
  # +fname+ _String_:: Name of the file to open.
  def self.open(fname)
    Book.new(fname)
  end
end
```

Use 'require_relative' rather than 'require' so that consumers don't have to fuss with the library path.
user
```ruby
require_relative "gnucash/account"
require_relative "gnucash/account_transaction"
require_relative "gnucash/book"
require_relative "gnucash/transaction"
require_relative "gnucash/value"
require_relative "gnucash/version"

# Namespace module for gnucash gem functionality
module Gnucash
  # Open a GnuCash book from file.
  # The file can be either a plain-text XML file or a gzipped XML file.
  # === Arguments
  # +fname+ _String_:: Name of the file to open.
  def self.open(fname)
    Book.new(fname)
  end
end
```
assistant