Files | Admin

Notes:

Release Name: 0.4.0

Notes:
Ruport 0.4.0 supports pdf-table output (submitted by Simon Claret), features a number of bug fixes and major cleanup, and has features designed to make Ruport easier to use.


Changes: The current version of Ruby Reports is 0.4.0 changes since 0.3.8: - added DataRow#to_h - Ruport::Format.register_filter now passes the content it will modify via a block. e.g. Ruport::Format.register_filter :reverser { |content| content.reverse } - Modified the license terms of Ruport so that it uses specifically the GPLv2. Further versions of Ruport may not be distributed under later versions of the GPL without expressed permission. - DataSet#[]= now passes rvals to DataRow constructor with fields from the DataSet it is called on. - Optional dependencies should now be forceably protected by opt_require. - Fixed a problem with Ruport.complain that caused it to force you to use a logger to make it work. - DataRow#eql? is fixed and now has a test covering it. - DataRow/DataSet can now be dup'ed / cloned (But may still have some dragons) - DataRow#+ now returns DataRows instead of arrays - Format::Builder rendering methods can now be registered through Format::Builder.register_rendering_method() - DataRow["somekeythatdoesntexist"] no longer throws an error (now returns nil) - Now some_data_row[:foo] and some_data_row["foo"] are equivalent - Fixed Query so it throws appropriate errors. No more magic nil. (I hope) - Ruport::Config.default_source now defaults to nil - Ruport::Config now has improved error detection. - additional Test coverage, documentation and logging. - DataSet#sigma (a.k.a DataSet#sum) added for summations. - Format::Builder#render_pdf renamed to Format:Builder#render_pdf_document - Format::Builder#render_pdf_table added. (Thanks Simon Claret!) - Fixed bug in remove_columns key features of Ruport 0.3.8: - New configuration system - New query model - New formatting system - Total API redesign - Lots more API documentation - A parser adapted from Parse::Input - ruport executable was deprecated [ Code was redesigned completely after 0.2.9 ] changes since Ruport 0.2.9: - Report::SQL dropped. - Fixed a bug in query that made ODBC driver not work at ALL! (AFAIK, this bug was ONLY in Ruport 0.2.9) - removed render() from the engine and implemented DataSet#render_as() example: @report = render(data) do |builder| builder.format = :some_format end is now: @report = data.render_as(:some_format) which takes an optional block that works as before. - removed method DataSet#select_field() because it was the same as DataSet#select_fields() and of limited utility. - added method DataSet#remove_fields and DataSet#remove_fields! to make data manipulation easier. - added DataSet#empty? - added DataSet#clone which will actually deep copy a DataSet. - cleaned up incredibly annoying DataSet constructor so you can now pass field names and data to new() - Report::DataSet now documented - added hacks.rb which will include a random collection of potentially useful functions. (Already cool for making Ruport easy to use with irb). - added Document class and unit tests. Needs to be completed. - added Report::DataSet.clone for making deep copies of DataSets. - added Element, Section, Page, and Document formatting classes. - restructured unit tests, adding ts_format and ts_report and moving all non-testcase data into test/samples - restuctured library, adding ruport/format.rb and ruport/report.rb made format and report into classes, with nested classes within. - Moved the Report::Engine class into Report - reorginized DataSet#<< to be more efficient. Thanks Francis! - added OpenNode. Which is a little scary. - Francis Hwang has added SqlSplit, which has been tied into query. Now multiple statement SQL dumps can be processed by ruport. - DataSet can now safely execute commands that return no rows. (This was a bug in RubyDBI which ruport now has a workaround for) - require "ruportlib" becomes require "ruport" changes since Ruport 0.2.5: - Added a new examples package with a 666 line walkthrough and more enjoyable demonstratons - Added support for multiple DSN's via add_dsn and select_dsn - Added Tagging support for DataSets. - Added DataSet#select_field and DataSet#select_fields to simplify grabbing data by column - Report::DataSet now implements to_s, for pretty printing goodness. - render_text now implemented in Format::Builder - Format::Builder now accepts headers and footers. - Format::Builder now can generate complete html via output_type - Ruport now uses FasterCSV, which is now a dependency. Yay! Dependencies! (But it IS 9x faster than the CSV lib that ships with Ruby) - Added tests to the gem spec... so you can use -t now. - DataRow#+ implemented. - Format::Builder#range implemented. (Can now format partial DataSets) - Fixed a bug in the unit tests that required Ruport to be installed. Now you can test BEFORE you install. (Sorry about that one...) - Commands that return no rows no longer crash the application (But writing to the database is still not fun nor easy) - templates/ folder now more aptly named scripts/ - Report::Engine#query now returns a DataSet so chaining is possible changes since Ruport 0.2.2: - Report::DataSet and Report::DataRow are now enumerable - DataSet#eql? fixed - Format::Builder has been added to handle formatting (Supports CSV / HTML currently) - Format::Builder is easily extendable via send("render_#{@type}") - DataSet#to_html convenience method added - DataSet#fields can now be arbitrary objects (does not need to be Strings) - Dropped DataRow#middle? because it was useless. (And poorly named) - FakeMailer added for testing goodness. - Dropped select() and execute() in favor of query() changes since Ruport 0.2.0: - Report becomes Engine - MockDB becomes FakeDB - MockReport becomes MockEngine - Modules are added so now, Ruport::Report::Engine, Ruport::Report::DataSet is the full name of these classes. - 'require ruportlib' runs include Ruport, so you can type Report::Engine.new instead of Ruport::Report::Engine.new - The assert that was supposed to be an assert_equal that David Black caught was fixed. - Examples are updated and now on the RubyForge FRS in many formats. (With .DS_Store and other garbage files removed! ;) ) - Formatting of code was cleaned up and improved. - Generates a test.rb that does not use deprecated functions now. changes since Ruport 0.1.0: CLEANUP / ORGANIZATION: - Parseinput dependency removed for now - setup.rb support removed - gem install will now only install a single executable - dropped undocumented YAML override feature - Query class now called Report - Project split into two parts lib/ruport/db and lib/ruport/format - dropped questionable ruport_query manager function - finally turned on expandtab and tabstop=2 for Ruby style ;) FEATURES: - require 'ruportlib' lets ruport be used as a library - MockDB and MockReport added to simplify testing - DataRow and DataSet added to provide munging with ease (to_csv, DataSet.load("some.csv"), etc - DataSet.load() can restore DataSet's that were YAML.dump()'ed - load_file now supports absolute and relative paths - added many automation features to templates - added @pre and @post to Report which accept lambdas to execute before and after generate_report() - logger added. - some friendly error messages added - new method query() will eventually replace select() / execute() - {examples}[http://ruport.rubyforge.org/] available for download