Changelog

Ginjo-Rfm 3.0.9

  • Fixed bug in parser that was appending each portal array recursively to itself.

  • Sax parser template option :template now takes a full-path string.

  • Compatible with dm-filemaker-adapter (for DataMapper ORM).

  • Config now recognizes :template option, allowing alternative parsing templates.

Ginjo-Rfm 3.0.8

  • Implemented proxy option for database connections thru a proxy server.

    config :proxy=>['my.proxy.com', 8888]
    
  • Implemented erb parsing of config.yml

  • Disabled :grammar => :auto option. The current xml parser cannot yet use the FMPXMLRESULT grammar for general queries.

Ginjo-Rfm 3.0.7

  • Changed record creation so that generic records created from non-modelized layouts will be instances of Rfm::Record, instead of instances of a transient model class based on the layout. Transient model classes will foul up serialization and any number of other things. Records created from a user-defined model class will continue to be instances of the model class.

    my_layout.find(12345).class  ==  Rfm::Record
    MyModel.find(12345).class    ==  MyModel
    

Ginjo-Rfm 3.0.6

  • Fixed duplicate portal-name merging, added specs to test this.
  • Minor updates to gem maintenance & release tools.

Ginjo-Rfm 3.0.5

  • Fixed parser handling of <field> element that's missing a <data> element.
  • Fixed coercion of repeating field data.
  • Fixed case where special characters in Filemaker data yielded array instead of string (sax parsing split text).
  • Fixed various bugs in metadata parsing.
  • Detached resultset from Rfm::MetaData::Field instance, now attaching only ResultsetMeta to Field.
  • Fixed ruby-prof rake task.
  • Updated deprecated rspec 2 specs, will now work with rspec 2 or 3.
  • Added more specs for some recently found bugs and for sax parser.
  • Fixed broken ActiveModel Lint specs in Ruby 2.1.
  • General refinements & cleanup.
  • Optimizations to sax_parser.
  • Fixed typo in field.rb that was causing bugs.

Ginjo-Rfm 3.0.4

  • Corrected reference to @meta in fmpxmllayout.yml. Specs now passing for Layout#load_layout.
  • Added error checking to Layout#load_layout.
  • Fixed setting/saving of repeating fields. Added spec to verify.
  • Fixed rspec rake task, fixed rake spec_multi.
  • Changed Ox default parse option to not encode special characters. This is now in tune with other parsers' defaults. This fixes (among other things) URLs returned from container fields.
  • Fixed error in gemspec preventing sax templates from being included in gem build.

Ginjo-Rfm 3.0.0

  • Disabled default port in Connection (was 80), as it was tripping up connections where the port wasn't specified for a :use_ssl connection on older Rubies.
  • Fixes to :ignore_portals option.
  • Removed runtime dependency on activesupport from gemspec.
  • Added check in Field#coerce to make sure a '?' is in a string before splitting on '?'. This was breaking repeating container fields.
  • Fixed case mismatch in hash key in Factory classes. Added logging of parsing template to logging of parsing backend.
  • Fixed bug in field_control#value_list.
  • Added layout_meta and resultset_meta objects.
  • Added fmpxmlresult.xml.builder for future use.
  • Added Rfm.logger, Rfm.logger=, Config.logger, Config#logger, and config(:logger=>(...)).
  • Added logging facility.
  • Moved #state method from individual classes to Config class.
  • Fixes to Base#update_attributes.
  • Refined multiple :use handling in Config.
  • Using rspec 2
  • Removed SubLayout.
  • Record.new now automatically creats models based on layout name. Should there be an option to disable this?
  • Removed ActiveSupport requirement (of course, ActiveSupport will load if ActiveModle is used, but that is the users' choice).
  • Removed XmlMini, XmlParser, and related code & specs.
  • Detached resultset from record, so record doesn't drag resultset around with it.
  • Disabled automatic model creation from a table-name in a new Rfm::Record when initializing.
  • Consolidated Base.new, Base#inititalize into Rfm::Record.
  • Fixed validation callbacks issue.
  • Fixed: Resultset will politely return [] when asked for non-existent portal_names.
  • Mods to rakefile benchmarking/profiling.
  • Refactored Resultset metadata methods.
  • Refactored Layout metadata methods.
  • Fixed bug in Config#get_config_file where a single file path might not be recognized.
  • Added connection.rb and moved some methods from Server to Connection.
  • Sax parsing rewrite.

Ginjo-Rfm 2.1.7

  • Added field_mapping awareness to :sort_field query option.
  • Relaxed requirement that query option keys be symbols - can now be strings.

Ginjo-Rfm 2.1.6

  • Fixed typo in Rfm::Record#[]=
  • Fixed bug where valid? was called on models without ActiveModel::Validations being loaded.
  • Fixed bug where Rfm::Base#reload wasn't clearing mods.

Ginjo-Rfm 2.1.5

  • Fixed bug preventing validation callbacks from running.

Ginjo-Rfm 2.1.4

  • Fixed bug where nil value list would raise exception.

Ginjo-Rfm 2.1.3

  • Fixed bug when loading layout metadata where value lists or field controls with only 1 item would throw an error.

Ginjo-Rfm 2.1.2

  • Fixed config.rb so that :file_path (to user-defined yml config file) can be specified as a single path string or as an array of path strings.

Ginjo-Rfm 2.1.1

  • Bug fixes

  • Specs passing in Ruby 1.8.7, 1.9.2.

Ginjo-Rfm 2.1.0

  • Removed :include_portals query option in favor of :ignore_portals.

  • Added :max_portal_rows query option.

  • Added field-remapping framework to allow model fields with different names than Filemaker fields.

  • Fix date/time/timestamp translations when writing data to Filemaker.

  • Detached new Server objects from Factory.servers hash, so wont reuse or stack-up servers.

  • Added grammar translation layer between xml parser and Rfm, allowing all supported xml grammars to be used with Rfm. This will also streamline changes/additions to Filemaker's xml grammar(s).

  • Fixed case statement for ruby 1.9

  • Configuration :use option now works for all Rfm objects that respond to config.

Ginjo-Rfm 2.0.2

  • Added configuration parameter ignore_bad_data to silence data mismatch errors when loading resultset into records.

  • Added method to load a resultset from file or string. Rfm::Resultset.load_data(file_or_string).

  • Added more specs for the above features and for the XmlParser module.

Ginjo-Rfm 2.0.1

  • Fixed bug in Base.find where options weren't being passed to Layout#find correctly.

  • Fixed bug in rfm.rb when calling #models or #modelize.

Ginjo-Rfm 2.0.0

  • ActiveModel compatibility allows Rails ActiveRecord-style models.

  • Alternative XML parsers using ActiveSupport::XmlMini interface.

  • Compound queries with multiple omitable find-requests.

  • Configuration API manages settings of multiple server/db/layout/etc setups.

  • Full Filemaker metadata support.

Ginjo-Rfm 1.4.4

  • Fixed bug when creating empty value list.

  • Additional fixes for Rfm::VERSION.

  • Fixed Record getter/setter issue.

  • Other minor fixes and cleanup.

  • Added tests to rspec.

  • Documentation cleanup.

Ginjo-Rfm 1.4.3

  • Fixed version management issue. Rfm::VERSION now works.

Ginjo-Rfm 1.4.2

  • Re-implemented:

    Layout#field_controls

    Layout#value_lists

  • Enhanced:

    ValueListItem handles both display & data items now.

    Timeout feature from timting (github/timting/rfm).

    Added specs for Record#save.

  • Fixed:

    [Bug] Getting & setting fields with symbol-based keys was producing error.

    [Bug] Setting fields would not update main record hash.

    [Bug] Record#save wasn't merging back into self.

  • Partial Fix:

    server.db.all db.layout.all db.script.all

    Note: the "#all" method returns object names (as keys) only. The receiver of the method maintains the full object collection.

    Example:

    server.db.all #=> ['dbname1', 'dbname2', ...]
    server.db     #=> a DbFactory object (descendant of Hash), containing 0 or more Database objects
    

Lardawge-Rfm 1.4.2 (unreleased)

  • Made nil default on fields with no value.

    Example:

    Old: record.john #=> "" 
    New: record.john #=> nil
    

Lardawge-Rfm 1.4.1.2

  • [Bug] Pointing out why testing is soooooo important when refactoring... Found a bug in getter/setter method in Rfm::Record (yes, added spec for it).

Lardawge-Rfm 1.4.1.1

  • [Bug] Inadvertently left out an attr_reader for server from resultset effecting container urls.

Lardawge-Rfm 1.4.1*

  • Changed Server#do_action to Server#connect.

  • XML Parsing is now done via xpath which significantly speeds up parsing.

  • Changes to accessor method names for Resultset#portals Resultset#fields to Resultset#portal_meta and Resultset#field_meta to better describe what you get back.

  • Added an option to load portal records which defaults to false. This significantly speeds up load time when portals are present on the layout.

    Example:

    result = fm_server('layout').find({:username => "==#{username}"}, {:include_portals => true})
    # => This will fetch all records with portal records attached.
    
    result.first.portals
    # => would return an empty hash by default.
    
  • Internal file restructuring. Some classes have changed but it should be nothing a developer would use API wise. Please let me know if it is.

  • Removed Layout#value_lists && Layout#field_controls. Will put back in if the demand is high. Needs a major refactor and different placement if it goes back in. Was broken so it didn't seem to be used by many devs.