Ruby libraries

From WhyNotWiki
Revision as of 00:14, 24 March 2007 by Tyler (Talk | contribs)
Jump to: navigation, search

Error! Missing argument!


Extensions/Libraries/Gems/etc. (for Ruby) (including some standard libraries)

See also: Rails plugins and extensions, Applications written in Ruby (for those projects that just refuse to be called a "library")

Contents

Core support libraries / Language "extensions"

star_full.gif star_full.gif star_full.gif Facets

Facets

require "facets/core/string/margin"
# or...

Ruby/Extensions

Ruby Extensions

autorequire

http://codeforpeople.com/lib/ruby/autorequire/autorequire-0.0.0/README

autorequire is sleeker, more aerodynamic, greasier version of autoload.
like autoload it's primary usage is to speed up the load time of large libraries which themselves do many requires.
    autorequire 'Queue', 'thread'
    # but we can also specify nested classes.  note the alternative hash syntax.
    # a list of const => lib pairs may also be given.
    autorequire 'CGI::Session' => 'cgi/session'

QS Our Extensions

http://rdoc.qualitysmith.com/our_extensions/

Testing

See Ruby / Testing#Libraries

Documentation / syntax highlighting

Rtags

Rtags : Haven't got it working yet!

star_full.gif star_full.gif star_empty.gif CodeRay

http://coderay.rubychan.de/

CodeRay is a fast syntax highlighting library written completely in Ruby.

Project maintenance, development

RubyScript2Exe

Categories/Tags: Build Tools , Compilers , Software Distribution
Documentation: http://rubyforge.org/projects/rubyscript2exe/



Description: RubyScript2Exe transforms your Ruby script into a standalone Windows executable. You can look at it as a "compiler".



Environment: Windows
Readiness: 5 - Production/Stable


Rake -- Ruby Make

rake

http://rake.rubyforge.org/

Capistrano

Capistrano  edit   (Category  edit)


Hoe

http://seattlerb.rubyforge.org/hoe/

Hoe is a simple rake/rubygems helper for project Rakefiles. It generates all the usual tasks for projects including rdoc generation, testing, packaging, and deployment.

  • announce - Generate email announcement file and post to rubyforge.
  • audit - Run ZenTest against the package
  • docs - Build the docs HTML Files
  • email - Generate email announcement file.
  • install - Install the package. Uses PREFIX and RUBYLIB
  • install_gem - Install the package as a gem
  • multi - Run the test suite using multiruby
  • package - Build all the packages
  • post_blog - Post announcement to blog.
  • post_news - Post announcement to rubyforge.
  • publish_docs - Publish RDoc to RubyForge
  • release - Package and upload the release to rubyforge.
  • test - Run the test suite. Use FILTER to add to the command line.
  • test_deps - Show which test files fail when run alone.
  • ...

http://seattlerb.rubyforge.org/hoedown.html

Hoe is used in 6.96% of all gems!

Looks comparable in scope to Ratchets.

Ratchets

http://ratchets.rubyforge.org/

http://ratchets.rubyforge.org/manual.html Ratchets - User Manual

Announcement: http://groups.google.com/group/nitro-general/browse_thread/thread/a6dd8d62552249ac?hl=en

http://reap.rubyforge.org/

Reap is a set of integrated tasks designed to simplify the life of Ruby application developers and project managers. The tasks cover the range of common needs, from setting up a standard project structure to packaging and announcements. Because of the commonality between the tasks, Reap utilizes a central YAML configuration file(s) to harvest project information. This significantly simplifies usage.
Custom tasks can also be easily created to suit specific project requirements. In this respect Reap is much like Rake. In fact Reap is a nearly 100% compatible replacement for Rake. On the other hand, if you can't pull yourself away from Rake, Reap's tasks can also be used via Rake much like any other set of addon Rake tasks.

Ratchets / Autorake

Template:Cite comment

> All in all it seems like a really nice rake that finally understands it's
> not only about tasks but about tasks for a specific project, i find that
> very positive :)

That's it exactly, well put.

star_full.gif star_full.gif star_full.gif Ratchets / Exacto

ProjectInfo

  The ruby extract runner can extract specific comments, in particular
  ==begin {label} ... ==end comments from a ruby script and run them
  as a stand-alone code that depends on the original script. By default
  it looks for comments labeled 'test'. So it is very good for running
  tests embedded directly into source, but can also be used for other
  code snippets.

setup.rb

http://i.loveruby.net/en/projects/setup/doc/ setup.rb User Manual

setup.rb is the generic installer for ruby scripts/extentions. You can automate configuration and installation of your program package.

Development: Debugging/Debuggers

RubyForge search

ruby-breakpoint

Description: ruby-breakpoint lets you inspect and modify state, diagnose bugs, patch applications and more all via IRB by simply doing a method call at the place you want to investigate. It is no longer being maintained. Please consider using ruby-debug instead.



Environment: Console (Text Based)
Readiness: 5 - Production/Stable, but abandoned


ruby-debug

Documentation: Faster implementation of the standard debug.rb using a native extension with a new hook Ruby C API .


Project/Development: http://rubyforge.org/projects/ruby-debug/





Readiness: 3 - Alpha


Log Debug

http://rubyforge.org/projects/log-debug/

Logging/Debugging library to allow different levels of Debug-msg verbosity -- i.e. can have multiple logging-objects (therefore output-targets), but an application only has an overall 'level'.

star_full.gif star_empty.gif star_empty.gif Ruby Development Utilities

http://rubyforge.org/projects/dev-utils/

Collects utilities that aid Ruby development, e.g. testing and debugging. Version 1.0 contains simple debug logging, tracing, and escaping to IRB.

star_full.gif star_empty.gif star_empty.gif debugprint

http://rubyforge.org/projects/debugprint/

A simple library that provides top-level debug() and info() methods. info() is the same as $stdout.puts() if $VERBOSE is true, debug() is the same as $stderr.puts() if $DEBUG is true.

Runtime Inspection and Debugging Thread

http://rubyforge.org/projects/rtinspect/

This is a class that will enable remote access capabilities in a running Ruby process, exposing the ability to enable breakpoints, walk code (e.g. step/next/continue), inspect variables, modify codepaths, and many other debugging actions.

Mr. Guid

http://rubyforge.org/projects/mr-guid/

Mitchell's Ruby GUI Debugger (Mr. Guid) is a simple Ruby GUI debugger written in Ruby using Ruby/GTK2 bindings. It is only meant to be a debugger, not an editor or IDE. It has all the functionality of Ruby's bundled debugger.

rudebug

http://rubyforge.org/projects/rudebug/

A graphical debugger for Ruby. rudebug is written using Ruby-GNOME2 and Glade. It has support for local and remote debugging with ruby-debug and ruby-breakpoint. For more information have a look at the homepage linked at the bottom of this page.

ZenDebugger

Part of ZenHacks

Plugin systems

GemPlugin: Gem-Based Plugin System

http://mongrel.rubyforge.org/gem_plugin_rdoc/index.html

GemPlugin is a system that lets your users install gems and lets you load them as additional features to use in your software. GemPlugin works by listing the gems installed, and doing a require_gem on any that have the right dependencies. For example, if a gem depends on "gem_plugin" and "mongrel" then it‘ll load as a Mongrel plugin. This makes it so that users of the plugins only need to gem install (and maybe config a bit), and plugin authors only need to make gems.


String manipulation / comparison / searching=

Homepage: http://amatch.rubyforge.org/
Documentation: RDoc


Project/Development: http://rubyforge.org/projects/amatch/


Description: This is a collection of classes that can be used for approximate matching, searching, and comparing of Strings. They implement algorithms that compute the Levenshtein edit distance, Sellers edit distance, the Hamming distance, the longest common subsequence length, the longest common substring length, and the pair distance metric.




Readiness: 4 - Beta


Example [1]:

 m = Sellers.new("pattern")

 m.match(["pattren","parent"])
 # => [2.0, 4.0]

 m.search("abcpattrendef")
 # => 2.0

StringIO

http://www.ruby-doc.org/stdlib/libdoc/stringio/rdoc/index.html stringio

http://beaver.net/slides/ruby/10-easy-pieces.html

  • Perform file i/o operations on a string
  • Lets you use same code path for manipulating strings and files

Console application (command line) libraries

See Ruby / Console libraries

Compression

zlib

http://www.ruby-doc.org/stdlib/libdoc/zlib/rdoc/index.html

http://beaver.net/slides/ruby/10-easy-pieces.html

  • Read and write compressed files or data
  • Popular zlib format (gzip, etc)
  • Save disk space at the expense of decompressing when you want to read your data

Data structures

Data structures: Trie

http://en.wikipedia.org/wiki/Trie

In computer science, a trie, or prefix tree, is an ordered tree data structure that is used to store an associative array where the keys are strings. [...] All the descendants of any one node have a common prefix of the string associated with that node, and the root is associated with the empty string. The following are the main advantages of tries over binary search trees (BSTs):

  • Looking up keys is faster. Looking up a key of length m takes worst case O(m) time. A BST takes O(log n) time, where n is the number of elements in the tree, because lookups depend on the depth of the tree, which is logarithmic in the number of keys.
  • ...

Trie

Project/Development: http://rubyforge.org/projects/trie/


Description: An implementation of a trie data structure, useful for efficiently searching prefixes of strings or of other similar data.




Readiness: 5 - Production/Stable



Data/File formats

Conversion of, output to, etc.

JSON library for Ruby

http://rubyforge.org/projects/json/

This library is for parsing JSON strings and unparsing ruby data structures. It can be easily extended to serialize/deserialize arbitrary ruby objects, and also includes a GTK2 GUI editor for JSON.

xmlresume2x

http://rubyforge.org/projects/xmlresume2x/

xmlresume2x can convert CVs written in the XML Resume Library format (http://xmlresume.sourceforge.net) to a number of formats, including LaTeX markup which uses the europecv class and HTML.

spreadsheet

Project/Development: http://rubyforge.org/projects/spreadsheet/


Description: This package allows you to generate Excel compatible spreadsheets on any platform. No OLE required.




Readiness: 2 - Pre-Alpha, release February 8, 2007


Data formats: PDF

Ruby PDF Tools

http://rubyforge.org/projects/ruby-pdf/

Tools written in pure Ruby (no C extensions) for working with PDF documents.

PDFlib

(not just Ruby)

http://www.pdflib.com/products/pdflib-family/pdflib/

PDF-Writer

http://ruby-pdf.rubyforge.org/pdf-writer/

Networking

Jabber::Simple

http://rubyforge.org/projects/xmpp4r-simple/

Jabber::Simple takes the strong foundation laid by xmpp4r and hides the relatively high complexity of maintaining a simple instant messenger bot in Ruby.

RubyTorrent

http://rubyforge.org/projects/rubytorrent/

RubyTorrent is a pure-Ruby BitTorrent peer library and toolset. You can use it to download or serve files over BitTorrent from any Ruby program.

net/https

Couldn't find a goood solid curl library for Ruby, so we used this. Seems to work quite nicely.

apt-get install libopenssl-ruby

Database

SQL Generation DSL

Homepage: http://rubyforge.org/projects/sqldsl/




Description: [[description := A framework for creating SQL statements with Ruby code. For example: Select[:column1].from[:table1].where do equal :column2, 10 end|A framework for creating SQL statements with Ruby code. For example: Select[:column1].from[:table1].where do equal :column2, 10 end]]




Readiness: 3 - Alpha


Database: [Object-Relational Mapping (category)]

DrySQL

See ActiveRecord

Distributed computing / DRb / Process management

dctl

http://rubyforge.org/projects/dctl/

dctl is a small toolkit for providing daemon functionnalty (start, stop, ...) to non-daemon process or script, with automatic handling of pidfiles. dctl could potentially be used as a service manager for self-contained servers.

RingyDingy

http://seattlerb.rubyforge.org/RingyDingy/

RingyDingy is a little boat that keeps your DRb service afloat!

Starfish: "ridiculously easy distributed programming with Ruby"

http://rufy.com/starfish/doc/

Ezra doesn't recommend it -- said it was pretty inefficient.

BackgrounDRb

http://backgroundrb.rubyforge.org/

BackgrounDRb is a ruby job server and scheduler. Its main intent is to be used with Ruby on Rails applications for offloading long-running tasks. Since a rails application blocks while servicing a request it is best to move long running tasks off into a background process that is divorced from the http request/response cycle.

BackgrounDRb tag on Ezra's blog

Graphics: general graphics libraries

RCairo graphics library

create vector graphics, output as various formats (PNG, PDF, SVG, etc.)

http://cairographics.org/rcairo

RMagick

ImageScience

http://seattlerb.rubyforge.org/ImageScience.html

ImageScience is a clean and happy Ruby library that generates thumbnails -- and kicks the living crap out of RMagick. Oh, and it doesn't leak memory like a sieve. :)

Graphics: Barcodes

ruby-semacode

http://rubyforge.org/projects/semacode/

Create semacodes, which are barcodes that contain URLs. Infinite possibilities such as rendering semacodes to HTML, SVG, PDF or even stored in a database or file for later use. Use a reader from http://semacode.org to decode this from your mobile phone.

Bar Code Library

http://rubyforge.org/projects/barcode/

This library is intended for use in generating bar code images from Ruby. It uses RMagick to generate image files.

Graphics: Graphing/visualization/plotting

Gruff Graphs for Ruby

http://nubyonrails.com/pages/gruff

The Gruff Graphing Library is a project to make beautiful graphs with Ruby. Can be used alone or with Ruby on Rails.

tioga

http://rubyfurnace.com/gems/tioga

a powerful scientific plotting library

RubyTreemap

Homepage: http://rubytreemap.rubyforge.org/
Documentation: RDocDemo: PNGDemo: HTML Treemap



Description: RubyTreemap provides an interface for creating treemaps and rendering them in multiple formats such as png, svg, and html.




Readiness: 3 - Alpha


What are Treemaps? See Treemaps

Examples/Usage

http://rubytreemap.rubyforge.org/docs/files/EXAMPLES.html

To create a treemap you first need to build up a tree structure using the Treemap::Node class. This is a generic tree node class and represents the data to be treemap’ed. A Node in the treemap has a size and a color. The size can be any value and is specific to your data set. So for example, in a treemap of the stock market, a given node’s size could be equal to it’s total shares sold for the day. For all non-leaf nodes the size value must be equal to the sum of the sizes of it’s children. If the size is nil it will be calculated by recursively summing the size of the child nodes. The color for a node can be either a value (usually a percentage (a rate of change)) or a hex string color (#FFCCFF). If the color is a value then a hex color string will be generated for you using the GradientColor class. A quick example: root = Treemap::Node.new root.new_child(:size => 6) root.new_child(:size => 6) root.new_child(:size => 4) root.new_child(:size => 3) root.new_child(:size => 2) root.new_child(:size => 2) root.new_child(:size => 1) You can also build a tree from an XML file: file = File.new("data.xml") root = Treemap::tree_from_xml(file) Once you built up your root node now all you have to do is output it. For example (html output): output = Treemap::HtmlOutput.new do |o| o.width = 800 o.height = 600 o.center_labels_at_depth = 1 end puts output.to_html(root) (or image output): output = Treemap::ImageOutput.new do |o| o.width = 800 o.height = 600 end output.to_png(root)

Reporting

Ruport: Ruby Reports

http://ruport.infogami.com/

Ruport is a REAP framework specialized for business reporting. It provides a custom toolkit that has features such as database interaction, data manipulation, extensible formatting, and flexible report generation. Ruby Reports makes reporting less painful by providing a simple and consistent way of developing your applications. This lets you focus on your task without undue friction. Ruby Reports is a framework that allows users to customize their reporting applications. It provides a solid foundation for you to build your applications on top of without making too many assumptions about your needs. Ruport is also a lighter alternative when compared to larger reporting packages. Here are some examples where Ruport is most useful:

  • You have some existing reports that you want to clean up and make more extensible.
  • You need to generate custom reports from a database-backed application (SQL/ActiveRecord).
  • You have to deal with many different data sources and create multiple forms of output.

[Web development (category)]

Libraries for building web sites

Ruby/CAPTCHA

Categories/Tags: [Captcha (category)]



Project/Development: http://rubyforge.org/projects/captcha/


Description: A simple CAPTCHA ("Completely Automatic Public Turing Test to Tell Computers and Humans Apart") written in Ruby. This will dynamically create an image containing a key displayed on a noisy background, which the user must enter into a text box.



Authors: Jamis Buck, Justin Dossey
Readiness: 4 - Beta



HTTP request / web request / screen scraping / cookies

beautiful soup?

scRUBYt

Homepage: http://scrubyt.org


Project/Development: http://rubyforge.org/projects/scrubyt/


Description: A simple to learn and use, yet very powerful web extraction framework in Ruby. Navigate through the Web, Extract, query, transform and save data from the Web page of interest by the concise and easy to use DSL provided by scRUBYt.




Readiness: 4 - Beta


WWW:Mechanize

http://mechanize.rubyforge.org/

http://tenderlovemaking.com/2007/02/26/ruby-mechanize-065-released/

The Mechanize library is used for automating interaction with websites. Mechanize automatically stores and sends cookies, follows redirects, can follow links, and submit forms. Form fields can be populated and submitted. Mechanize also keeps track of the sites that you have visited as a history.

Examples

Mechanize One Liners (http://tenderlovemaking.com/2006/05/26/mechanize-one-liners/). Retrieved on 2007-03-06 14:59.

Fetch a page and print to stdout:

puts WWW::Mechanize.new.get(ARGV[0]).body

List all links in a page:

WWW::Mechanize.new.get(ARGV[0]).links.each { |l| puts l.text }

Visit all links on a page:

(a = WWW::Mechanize.new).get(ARGV[0]).links.each { |l| puts a.click(l).body }

List all links that match a pattern:

WWW::Mechanize.new.get(ARGV[0]).links.text(/[a-z]/).each { |l| puts l.text }

Visit all links that match a pattern:

(a = WWW::Mechanize.new).get(ARGV[0]).links.text(/[a]/).each { |l| puts a.click(l).body }

Smaller Spider:

(mech = WWW::Mechanize.new).get(ARGV[0])
(a = lambda { |p|
  mech.page.links.each { |l| mech.click(l) && p.call(p) if ! mech.visited? l }
}).call(a)


A spider: A Mechanize Spider (http://tenderlovemaking.com/2006/05/24/a-mechanize-spider/). Retrieved on 2007-03-06 14:59.

agent = WWW::Mechanize.new
stack = agent.get(ARGV[0]).links
while l = stack.pop
  stack.push(*(agent.click(l).links)) unless agent.visited? l.href
end

Web services

eBay4R

http://rubyforge.org/projects/ebay4r/

eBay4R is a Ruby wrapper for eBay's Web Services SOAP API. Emphasis is on ease of use and small footprint. Forget the 40-50 line examples eBay gives you in C# and Java. With Ruby and eBay4R, examples are 5 lines or less.

rflickr

http://rubyforge.org/projects/rflickr/

rflickr is a Ruby implementation of the Flickr API. It includes a faithful reproduction of the published API as well as method encapsulation to provide more useful object mappings. rflickr features result caching to improve performance.

Gmailer

http://rubyfurnace.com/gems/gmailer

A class interface of the Google’s webmail service

Miscellaneous

tempfile

http://www.ruby-doc.org/stdlib/libdoc/tempfile/rdoc/index.html

http://beaver.net/slides/ruby/10-easy-pieces.html

  • Create a private temporary file with a guaranteed unique path
  • Temp file is cleaned up automatically for you when the object expires
irb -> require 'tempfile'

irb -> f = Tempfile.new('what')
    => #<File:/tmp/what.30706.0>

irb -> f.path
    => "/tmp/what.30706.0"

irb -> f << "Some text."
irb -> f.rewind
irb -> f.read # => "Some text."

irb -> system "#{ENV['EDITOR']} #{f.path}"

irb -> require 'fileutils'

irb -> FileUtils.chmod 0700, f.path

# File won't be written until you close it.
irb -> f.close

# Although you can explicitly unlink the file, why bother? It appears to do that for you after the process terminates.
irb -> f.unlink
    => #<File:/tmp/what.30706.0>

http://safari.oreilly.com/0596523696/rubyckbk-CHP-6-SECT-8 [missing feature (category)]

Note that you can't pass a code block into the Tempfile constructor [like you can with IO objects]: you have to assign the temp file to an object, and call Tempfile#close when you're done.

dbm

http://www.ruby-doc.org/stdlib/libdoc/dbm/rdoc/index.html

http://beaver.net/slides/ruby/10-easy-pieces.html

  • Simple disk-based key/value binary database, quick lookup time
  • Not to be confused with bdb modules (Berkeley DB)
  • Use this if you want to easily store a table of data to disk and you're not concerned with keeping it human-readable

pathname

http://www.ruby-doc.org/stdlib/libdoc/pathname/rdoc/index.html http://beaver.net/slides/ruby/10-easy-pieces.html

  • Uber-class that bundles up all logic relating to file paths
  • Wraps methods from Dir, Find, IO, File, FileUtils, FileTest classes
  • Resolve symlinks, generate relative paths, safely concatenate path components

Low-level Ruby / Ruby internals / Ruby hacks

"evil.rb" should go here...

Ruby/DL

ZenHacks

http://rubyforge.org/projects/zenhacks

A cornucopia of hackery. Toys, Tricks and Tools that have spawned out of my other projects (RubyInline, ParseTree, Ruby2C, etc) but don't exactly fit there. This includes ZenDebugger, ZenProfiler, ZenOptimizer, ruby2ruby, and more.

[Ruby performance (category)][low-level Ruby (category)][visualization (category)][graphics (category)] mem_inspect

http://seattlerb.rubyforge.org/mem_inspect/

mem_inspect is ObjectSpace.each_object on crack. mem_inspect gives you the contents of each slot in Ruby‘s heap. mem_inspect also includes viewers that let you visualize the contents of Ruby‘s heap.
  • Dumping a PNG
  require 'mem_inspect'
  require 'mem_inspect/png_viewer'
  MemInspect::PNGViewer.new(1024, 768).draw
  • Dumping via AquaTerm
    • Requires: RubyCocoa, AquaTerm
  require 'mem_inspect'
  require 'mem_inspect/aquaterm_viewer'
  MemInspect::AquatermViewer.new(1024, 768).draw

Ruby parsers / code analyzers / code generation / etc.

star_full.gif star_full.gif star_empty.gif ParseTree

http://rubyforge.org/projects/parsetree

ParseTree is a C extension (using RubyInline) that extracts the parse tree for an entire class or a specific method and returns it as a s-expression (aka sexp) using ruby's arrays, strings, symbols, and integers.

star_full.gif star_empty.gif star_empty.gif ParseTree

http://seattlerb.rubyforge.org/ruby2ruby/

ruby2ruby provides a means of generating pure ruby code easily from ParseTree‘s Sexps. This makes making dynamic language processors much easier in ruby than ever before.
RubyToRuby.translate(MyClass, :mymethod) # => "def mymethod..."


Metaruby

http://rubyforge.org/projects/metaruby

Metaruby is the reimplementation of ruby in ruby, including the core libraries, parser, interpreter, and memory system.

ObjectGraph

http://seattlerb.rubyforge.org/ograph/

ObjectGraph will output [Graphviz (category)] dot files of your objects in memory. It will ferret out your instance variables and enumerate over your enumerables to give you a graph of your object and its relationships.

Error on call to Template:cite web: Parameter url must be specified. Retrieved on 2007-03-06 14:59.

require 'ograph'
require 'rubygems'
require 'mechanize'

mech = WWW::Mechanize.new
mech.get('http://google.com/')

puts ObjectGraph.graph(mech, :class_filter => /^WWW/)
desc "project object graph"
task :ograph do
  require 'ograph'
  require 'project/project'

  project = Project.load

  puts ObjectGraph.graph(project, :class_filter => /^Project/)
end

[Ruby performance (category)] / optimizers / Ruby compilers / etc.

RubyInline

http://rubyforge.org/projects/rubyinline

Ruby Inline is an analog to Perl's Inline::C. Out of the box, it allows you to embed C/++ external module code in your ruby script directly.

Ruby2c

http://rubyforge.org/projects/ruby2c ruby2c - ruby to c translator

ruby2c is a subset of the metaruby project, which aims at rewriting ruby's internals in ruby. ruby2c is the translation module and can automatically translate a method into equivalent C code for a subset of ruby. Very BETA, but making rapid progress.

GUIs / Desktop application frameworks

FXRuby

Homepage: http://www.fxruby.org/
Documentation: User's guide Examples/screenshots


Project/Development: http://rubyforge.org/projects/fxruby


Description: FXRuby is a Ruby extension module that provides an interface to the FOX GUI library.
Based on: Uses Fox], a platform independent GUI toolkit written in C++.




star_full.gif star_full.gif star_empty.gif RubyWebDialogs

The Web Browser as a Graphical User Interface for Ruby Applications


Homepage: http://www.erikveen.dds.nl/rubywebdialogs/index.html (impressive)
Documentation: http://rwdapplications.rubyforge.org/wiki/wiki.pl?RubyWebDialogs


Project/Development: http://sourceforge.net/projects/rubywebdialogs/http://rubyforge.org/projects/rubywebdialogs/



License: [[:GPL 2 LGPL 2.1|GPL 2 LGPL 2.1]]


Authors: Erik Veenstra


Lets you build platform-independent GUI applications by using your web browser/a web server (?).

http://rwdapplications.rubyforge.org/wiki/wiki.pl?RubyWebDialogs

RubyWebDialogs is a platform-independent graphical user interface for Ruby applications. It generates HTML and serves it with an internal HTTP server, so you can use your favorite web browser as the front end for your Ruby application. All this means, that it can be used on almost every platform, like Ruby itself. The basic idea of RubyWebDialogs is to keep development simple, so one can build simple applications in a couple of minutes and not-that-simple applications in a couple of hours. It's not meant for building big applications or things like adding functionality to the corporate's web site. (They'll use Java, anyway...) But if things get faster, and more stable, and more feature-rich, and more community driven, and more integrated with WEBrick, and Apache, well, who knows what all this will lead to... For now, it's just a thing I already use for almost a year and want to share. You don't have to know anything about HTML, or HTTP, or cookies, or TCP/IP or anything else that's necessary to communicate with browsers over a network. All that has to be and is covered by RubyWebDialogs. The only thing you need to know, besides Ruby, is the very basics of XML, because it's used to define the layout of the screens. RubyWebDialogs doesn't require any external packages, no RubyXML, no WEBrick, no Amrita. Just plain Ruby. RubyWebDialogs applications can be used over a network as well. A simple authentication mechanism is built in.

Example [2]:

<application>
  <window name="main" title="Simple Calculator">
    <table>
      <row> <p align="right">First number:</p>  <text name="a"/> </row>
      <row> <p align="right">Second number:</p> <text name="b"/> </row>
    </table>
    <p>%result%</p>
    <horizontal>
      <button caption="Multiply" action="multiply"/>
      <button caption="Add"      action="add"/>
    </horizontal>
  </window>
</application>

File rwdcalc.rbw:

require "ev/rwd"

class Demo < RWDialog
  def multiply
    @result = "%s * %s = %s" % [@a, @b, @a.to_i*@b.to_i]
  end

  def add
    @result = "%s + %s = %s" % [@a, @b, @a.to_i+@b.to_i]
  end
end

Demo.file("rwdcalc.rwd").serve

Extensions/frameworks/add-ons for it:

RubyForge: RWD Applications

http://rubyforge.org/projects/rwdapplications/

Ruby scripts that can be used with the RubyWebDialogs GUI interface. These tools and applications are useful for simple tasks.
  • Tinker is a GUI application framework using Ruby
  • ...


Tk (Windows, etc.)

RubyCocoa (Mac only, I assume)

rubycocoa.sourceforge.net/doc/getting.en.html

Korundum/QtRuby - Ruby-KDE/Qt bindings

http://rubyforge.org/projects/korundum/

Ruby KDialog

http://rubyforge.org/projects/kdialog/

KDialog is a wrapper class for KDE kdialog application. kdialog is a simple (easy to use) program which lets you build GUIs for your apps and scripts. The KDialog class tries to bring that simplicity into your Ruby programs.

Business/accounting: Currency exchange

Currency - OO currency, FX, ExRate money

Project/Development: http://rubyforge.org/projects/currency/


Description: Currency package provides an object-oriented model of world currencies, foreign exchanges, exchange rates and money values. Money values are timestamped for convertion between currencies using historical exchange rates. Supports RoR/ActiveRecord.




Readiness: 4 - Beta


Natural languages / Linguistics

Categories/Tags: Graphics, Text Processing



Project/Development: http://rubyforge.org/projects/rsyntaxtree/


Description: RSyntaxTree is a Ruby port of phpSyntaxTree. It generates graphical images of tree structures typically used in theoretical linguistic researches (though not necessarily restricted to). It consists of an easy-to-use ruby library and web-based interface made with Ruby on Rails.





[Mathematics (category)] / Science

Ruby/GSL (GNU Scientific Library)

http://rubyforge.org/softwaremap/trove_list.php?form_cat=15&page=3

Ruby/GSL is a ruby interface to GNU Scientific Library. This provides useful tools for numerical calculations in Ruby, as vector/matrix manipulations, root-findings, numerical integrations, ODEs etc..

Permutation

http://rubyforge.org/projects/permutation/

Permutation class in pure Ruby implemented with a rank/unrank algorithm

Miscellaneous

RWikiBot

http://rubyforge.org/projects/rwikibot/

RWikiBot is a framework for creating a bot suitable for accessing a MediaWiki wiki through the MediaWiki API. It provides a method for each of the API's methods, allowing the bot to do very botty things, like read articles and send emails.

Vim/Ruby Configuration Files

http://rubyforge.org/projects/vim-ruby/

Contains the official Vim configuration files for the compilation, indenting, and syntax highlighting of Ruby files. If you use Vim to edit Ruby code, you want these files, and you want them up to date.

Miscellaneous: Voting

parlement

http://rubyforge.org/projects/parlement/

Internet democracy mixing deliberations, propositions and votes. Security with P2P, PGP signatures, electoral lists.

Ruby Vote

http://rubyforge.org/projects/rubyvote/

This is an election methods and voting systems library written in Ruby. It provides a simple, consistent and well documented interface to a large number of preferential and traditional election and voting methods.

Miscellaneous: Computer vision

hornetseye

http://rubyforge.org/projects/hornetseye/

real-time computer vision - Ruby real-time computer vision library for GNU/Linux offering interfaces to do image- and video-I/O with ImageMagick/Magick++, Xine, firewire digital camera (DC1394), and video for linux (V4L).

Ruby/OpenCV

http://rubyforge.org/projects/opencv/

Ruby/OpenCV - OpenCV is "Open Source Computer Vision Library". OpenCV is developed by Intel and many opensource developers. This library include many useful function for Computer vision, such as Object-Detection.

camellia

http://rubyforge.org/projects/camellia/

The Camellia Library is an Image Processing & Computer Vision library ported to the Ruby Language. Written in plain C, it is cross-platform (Linux, Windows) and robust. The Ruby version is very fast, object-oriented and compatible with the FXRuby GUI.

Miscellaneous: Media / Music / MP3s / iTunes / iPods

Net::DAAP::Client

http://rubyforge.org/projects/daapclient/

This is an Apple iTunes DAAP client written in Ruby. It will allow Ruby programs to interface with iTunes music shares.

== Armangil's podcatcher

(Move to Applications written in Ruby)

http://rubyforge.org/projects/podcatcher/

Armangil's podcatcher is a podcast client for the command line. It provides several download strategies, offers cache management, supports BitTorrent, and generates playlists for media player applications. Visit http://podcatcher.rubyforge.org/

MusicExtras

http://rubyforge.org/projects/musicextras/

Musicextras is a program for automatically retrieving extra information for songs. Currently, it can download lyrics, artist images, album covers, and more. Site plugins allow developers to easily add new data to be retrieved.

rmovie

http://rubyforge.org/projects/rmovie/

rmovie is Ruby extension for accessing information in media files. rmovie can access many media formats (mov, avi, mpg, wmv...) and can output movie frames to RMagick. Use http://groups.google.com/group/rmovie for feedback.

XSPF Playlist Class

http://rubyforge.org/projects/xspf/

A Ruby library to parse XML Shareable Playlist Format (XSPF) documents and export them to M3U, SMIL, HTML and SoundBlox

ruby-mp3info

http://rubyforge.org/projects/ruby-mp3info/

a pure ruby library for access to mp3 files (internal infos and tags)

MP3 Retracker

http://rubyforge.org/projects/mp3retracker/

A simple tool to automatically reorder ID3 tag track numbers within a given list of mp3 files. Wraps the external program id3v2.

Miscellaneous: Artificial intelligence / logic

DRP (Directed Ruby Programming)

http://rubyforge.org/projects/drp/

Directed Programming is a cross between Grammatical Evolution and Genetic Programming (solving some of their problems while it's at it). Both techniques including hybrids of the two can be created w/ DRP. Pure Ruby and Very VERY easy to use.

Neuro

http://rubyforge.org/projects/neuro/

A Ruby extension that provides a 2-Layer Back Propagation Neural Network, which can be used to categorize datasets of arbitrary size. The network can be easily (re-)stored to/from the hard disk.

rbayes

http://seattlerb.rubyforge.org/rbayes/

rbayes is a bayesian classifier with an email-specific tokenizer. rbayes was originally written by Dan Peterson and later refactored into a single class.

Directories of

Article Metadata:

Within each category, order by preference/rating.

Some overlap with:

  • tips/questions: For example, I may have a tip/answer "How to do an MD5 hash" which happens to use a standard/3rd-party library. How to avoid duplication here?

Database table schema:

  • home page (nice-looking, promotional material, why you should use it, etc.)
  • doc page
  • project collaboration (RubyForge/SourceForge) page
  • repository (Subversion, etc.) URL
Facts about Ruby librariesRDF feed
Description [Oops! No type defined for attribute]
Ads
Personal tools