Posted: July 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, SQL | Tags: Open Source, Programming, sqlite3 | No Comments »
So, I think this may be good news for some folks.
February 24, 2009 is the date that Jamis Buck marked as the end of several of his open source projects, including SQLite3/Ruby. (you can read the post here)
Previously, he asked for help updating SQLite3/Ruby to make it work on Windows.
That sad news left a lot of us with a bad taste, and very unhappy, not because we no longer will have someone to complain at, but because he no longer enjoyed working on those projects.
Over the past months I’ve been improving rake-compiler to be able to catch most of the building issues of several projects, including my own (I love to scratch my own itch).
As you have noticed on my “getting started with Rails and SQLite3″: http://blog.mmediasys.com/2009/07/06/getting-started-with-rails-and-sqlite3/ post, I successfully built, installed and used a SQLite3/Ruby gem on Windows.
The next question was, what to do? The work to get all those lovely gems was there, initial 1.9 was there, but was not official
While SQLite3/Ruby being the de-facto for getting started with Rails, we couldn’t let it die.
Enough words, sent some emails to Jamis and now I can publish those gems to RubyForge.
What all that babbling means?
This means:
- My fork at GitHub is the new mainstream for the releases
- I’m going to go over the open bugs and tickets and asses validity and relevancy based on work that was already done in my fork.
- The release cycle has been improved and almost automated. It can be performed from Windows, Linux or OSX, even using latter to create Windows native gems.
Now, what happens with new features:
- Pull requests with patches and bug fixes are going to be accepted.
- New features will be evaluated as long they don’t impose structural changes and carry with them tests cases.
- Patches that improve Ruby 1.9 compatibility are highly appreciated.
I don’t have strong knowledge of all the internals of this tool, so don’t expect earth breaking changes from me, except ensuring stability.
I hope this is good news to everybody. Now I’m going to stalk MySQL binding author and get permission to push those lovely gems
Cheers everybody!
(Via DEV_MEM.dump_to(:blog) – Multimedia systems blog.) Original Link: Stepping up as SQLite3/Ruby maintainer
Posted: July 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, Rails | Tags: how-to, Open Source, Programming, Rails, rake | No Comments »
Estoy terminando de hacer una migration a Rails 2.3 de la
app con la que estoy trabajando, resulta que me encontré con el siguiente tema:
Luego de instalar rails y migrar la app, llegó el momento de hacer un deploy a
staging, entonces me econtré con el siguiente error:
undefined method `reenable' for <Rake::Task db:schema:dump =>
[environment]>:Rake::Task
googleando un poco llegué a este link que dice que hay que instalar
la nueva versión de rake, investigando un poco más, llegué a este PATCH
que hace uso del método Rake::Task#reenable, el caso es que este método
se agrega e con la versión de rake 0.8.2 y como el pibe dice en el comentario
del patch, no hay problemas por que rails 2.3 require rake 0.8.3…. pero
que pasa cuando:
1- Instalo rails 2.3
2- Hago un ‘rake rails:freeze’
3- hago ‘cap staging deploy:migrations’
Y no tengo rails 2.3 instalado en el server y por eso justamente hice un freeze.
Si leemos la task que arma las dependencias de rails:
s.add_dependency('rake', '>= 0.8.3')
s.add_dependency('activesupport', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('activerecord', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('actionpack', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('actionmailer', '= 3.0.pre' + PKG_BUILD)
s.add_dependency('activeresource', '= 3.0.pre' + PKG_BUILD)
uando hacemos el freeze nos copia todas estas cosas menos el rake,
lo cual parece razonable. Pero creo debería agregar en config/environment.rb
config.gem “rake”, :version => ‘0.8.3′
Que opinan uds?

(Via Gastón Ramos – Ruby, Rails….) Original Link: Rails 2.3, rake y reenable method
Posted: July 7th, 2009 | Author: FreedomCoder | Filed under: Rails, SQL, how-to | Tags: how-to, Rails, sqlite3 | 1 Comment »
A few folks asked this over the past weeks, and since I released preview1 version of RubyInstaller, wouldn’t be awesome I write a guide for it?
So, here we go
First, Getting Ruby
Please download from here one of the preview1 installers for Ruby.
For this demonstration, I’m going to use Ruby 1.9.1-p129. Downloaded, executed and installed to it’s default location C:\Ruby19
Now, start a Command prompt with Ruby (under start menu, inside Ruby 1.9.1-p129).

Getting SQLite3
As you may know, Windows do not came out of the box with libraries like SQLite3. For this, we are going to download it from Internet.
Going to SQLite downloads, under Precompiled binaries for Windows, download sqlitedll-3_6_16.zip and sqlite-3_6_16.zip. Those two packages contains the DLL (sqlite3.dll) and the command line executable for SQLite (sqlite3.exe).
Please extract those contents inside C:\Ruby19\bin
Now, let’s get the Ruby bindings for SQLite3
Getting SQLite3/Ruby bindings
As you may know, the preferred way to distribute Ruby libraries is using Gems. Users on other platforms usually compile themselves these components, using the mechanisms provided by the operating system distribution.
We are going to avoid the compilation process using pre-compiled binaries that has been cooked for us.
So, back to the Command Prompt with Ruby, let’s install the sqlite3 bindings:
gem install sqlite3-ruby --source http://gems.rubyinstaller.org
Adding --source help us indicate a non-standard location from where gems are going to be installed. RubyInstaller team has built and packaged special versions of these gems that we hope get published soon into RubyForge, the official place for gem distribution.
Once installed, you should see something like this at the screen:
Successfully installed sqlite3-ruby-1.2.4.1-x86-mingw32
1 gem installed
These special version of the gem are fat binaries, which means these can be safely installed on Ruby 1.8.6 or 1.9.1.
Getting Rails
Now it’s time to install and build a Rails application. First, let’s install the rails gem:
gem install rails
That command is going to take a bit, since is a 2MB or so download, and will install several of the Rails dependencies (ActiveRecord, ActionPack, ActiveSupport, etc). You should expect similar output to this:
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
6 gems installed
Let’s build our application now.
Creating a Rails application.
Let’s call the application railsapp
rails railsapp
An excerpt of the output you should get:
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create config/locales
create db
...
Rails 2.3.2 defaults it’s database format to SQLite3, so there is no need for us to tweak anything.
Checking if everything is ok, using script\about:
cd railsapp
ruby script\about
And the output should be something like this:
About your application's environment
Ruby version 1.9.1 (i386-mingw32)
RubyGems version 1.3.4
Rack version 1.0 bundled
Rails version 2.3.2
Active Record version 2.3.2
Action Pack version 2.3.2
Active Resource version 2.3.2
Action Mailer version 2.3.2
Active Support version 2.3.2
Application root C:/Users/Luis/railsapp
Environment development
Database adapter sqlite3
Database schema version 0
Now, it’s up to you create your models, controllers and everything.
Some notes and considerations.
At the time of this writing, Mongrel has not been updated to build and install properly either on 1.9 or MinGW versions of Ruby.
As part of Mongrel development team, I’m going to work on a solution for this in the upcoming days.
If you find something wrong with the Ruby Installer, please report here, but issues with your code, Rails or other are not responsability of RubyInstaller.
The binary gems provided at gems.rubyinstaller.org are based on our forks of sqlite3-ruby, which can be cloned and explored here at GitHub.
Keep in mind that some gems would not work under Ruby 1.9, or you will need a compiler (DevKit) for it. See previous post with details how to get those from our download page.
(Via DEV_MEM.dump_to(:blog) – Multimedia systems blog.) Original Link: RubyInstaller: Getting Started with Rails and SQLite3
Posted: July 7th, 2009 | Author: FreedomCoder | Filed under: Rails, SQL, how-to | Tags: how-to, msyql, Rails | No Comments »
This is a follow up instruction set from previous post, but this time, using MySQL
Getting Ruby
These steps are the same for Ruby 1.9 or Ruby 1.8, please feel free to download the installer from here
For this guide I’m going to use Ruby 1.9.1-p129, since it the coolest new version that all the guys are playing with
Now, start a Command prompt with Ruby (under start menu, inside Ruby 1.9.1-p129).

Getting the right MySQL version
While building the MySQL/Ruby bindings, we found that mixing versions of the bindings with different versions of MySQL installations ended on undesired results (abnormal program termination, weird errors, etc.)
For this guide, and because we are going to use binary gems, we are going to stick to MySQL version 5.0.83.
Now is time to download MySQL. For this guide, I’m going to install the essentials version, which contains only MySQL and command line tools, no Query Builder or any other administrative tool.
Please go to this page and download Windows Essentials (x86). Once downloaded you will end with mysql-essential-5.0.83-win32.msi file. Execute it and install with defaults.
Configure MySQL
If you’re an advanced and savvy MySQL user, you can skip the following steps. For the sake of this guide, I’m going to list the simple options you must follow when installing it.
Once you installed MySQL, the installer should have started the Configuration Wizard page.
Inside of it, please apply the following options:
| Option/Screen |
Value |
| Configuration Type |
Detailed configuration |
| Server type |
Developer Machine |
| Database usage |
Transactional Database only |
| InnoDB datafile |
Your option or leave defaults |
| Number of connections |
Decision Support |
| Networking options |
Check Add firewall exceptions |
| Character set |
Best support for Multilingualism (UTF8) |
| Windows Options |
Add to PATH if you want mysql available on every prompt |
| Security Options |
Uncheck if you want root password be blank |
Once done with all this, on the summary screen, please click Execute to complete the configuration of MySQL Server.
Under some system, starting of MySQL server will fail during this wizard, but don’t be afraid, most of the times, this can be safely ignored.
To check everything was properly installed, please go to the Start Menu, and inside MySQL Server 5.0, click on MySQL Command Line Client
If you changed the root password, or, like me, leaved it unchecked, you can simply press enter when asked for the password and see that the server is running!

If you decided to add MySQL to the PATH, you will require to restart your computer so the PATH change is available to the system.
If you decided not to add MySQL to the PATH, please go, with Explorer to the location where you installed MySQL Server and copy libmySQL.dll into C:\Ruby19\bin
In my case, I found this file in C:\Program Files\MySQL\MySQL Server 5.0\bin
Now, it is time to install the bindings.
Getting MySQL/Ruby
For this version of Ruby, there is no official binary gems for both Ruby 1.8 and 1.9. So we are going to install the specially built version from RubyInstaller gems repository.
At the Command Prompt with Ruby, please enter the following command:
gem install mysql --source http://gems.rubyinstaller.org
This is going to install the special version of MySQL bindings. This version works with Ruby 1.8 and 1.9, since bundles fat binaries. You should expect a similar output like this:
Successfully installed mysql-2.8.1.1-x86-mingw32
1 gem installed
Getting Rails
Now is time to install Rails and build our application. At the same command prompt, please enter the following command:
gem install rails
This is going to take a bit, since Rails and it’s dependencies takes around 2MB or so, and need to be downloaded and installed.
Once done, expect see at the screen something like this:
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
6 gems installed
Creating a Rails application
Let’s name our application mysqlapp
rails mysqlapp --database=mysql
The --database option indicates to Rails that we want to use MySQL instead of the default database adapter (SQLite3).
Rails will output a lot of lines when creating your application structure, just an excerpt of what to see:
...
create config/database.yml
create config/routes.rb
create config/locales/en.yml
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/new_rails_defaults.rb
create config/initializers/session_store.rb
create config/environment.rb
...
Configuring our Database
Now Rails have configured for us the name of the database we want to use, and you can verify it in config\database.yml
Rails will try to connect to mysqlapp_development, but that database do not exist in our fresh new MySQL server.
So, let’s create it:
cd mysqlapp
rake db:create
Just that, simple db:create is going to connect to our MySQL server, and create the database for us.
Keep in mind that if you changed root password or want to use other MySQL user to connect to the database, you need to edit database.yml to reflect those changes.
Let’s verify that everything is in place, using the following command:
About your application's environment
Ruby version 1.9.1 (i386-mingw32)
RubyGems version 1.3.4
Rack version 1.0 bundled
Rails version 2.3.2
Active Record version 2.3.2
Action Pack version 2.3.2
Active Resource version 2.3.2
Action Mailer version 2.3.2
Active Support version 2.3.2
Application root C:/Users/Luis/mysqlapp
Environment development
Database adapter mysql
Database schema version 0
Now is up to you to create your models, controllers and views!
Some notes and considerations
On other post I’m going to guide you with steps on building the bindings against MySQL 5.1.36, since you will need to install the Ruby Development Kit and the development headers for MySQL.
If you find something wrong with the Ruby Installer, please report it here, but issues with your code, Rails or other are not responsability of RubyInstaller.
The binary gems provided at gems.rubyinstaller.org are based on our forks of mysql bindings, which can be cloned and explored here at GitHub.
Keep in mind that some gems would not work under Ruby 1.9, or you will need a compiler (DevKit) for it. See previous post with details how to get those from our download page.
(Via DEV_MEM.dump_to(:blog) – Multimedia systems blog.) Original Link: RubyInstaller: Getting Started with Rails and MySQL
Posted: July 6th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, github, how-to | Tags: github, how-to, Open Source, Programming | No Comments »
Well, hello again, long time since the last post. I went on vacations, work a lot and did some programming. Let’s talk abount the programming part, since it is the most interesting one.
I created a small library called “Esearchy” capable of searching the internet for email addresses. Currently, we the supported search methods are engines such as Google, Bing, Yahoo, PGP servers, GoogleGroups, etc , but I intend to add many more.
Also, the library searches inside .pdf and .txt files for emails addresses and adds them to the list of found accounts.
For now, there are two main ways of performing a search, “the ruby way”
-
Esearchy.create "domain.com" do |domain|
-
domain.maxhits = 500
-
domain.search
-
domain.clean {|e| e =~ /<|>/ }
-
domain.save_to_file "~/emails.txt"
-
end
and the more classic way in which users can create an Esearchy objetc and work on it
-
domain = Esearchy.new :query => "domain.com", :maxhits => 500
-
domain.search
-
domain.save_to_file "~/emails.txt"
For now , that’s it for now , but keep on tuned for more shitty code ajjajaa
(Via 自由編碼人.) Original Link: I’m back with some Code …
Posted: July 6th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, how-to | Tags: how-to, Open Source, Programming, Regular Expressions | No Comments »
Siguiendo mi proyecto de hacer mi wiki en Ruby, encontré un comportamiento muy raro.
Generé un hash (que se llama @rules) que no tiene un elemento que tiene. O sea, @rules[@rules.keys[2]] da nil, pero @rules.values[2] devuelve el objeto asociado a la clave @rules.keys[2]. Como este hash tiene como claves un montón de expresiones regulares, me imaginé que había un problema con el hash y el eql? de Regexp, así que los implementé de nuevo y monkeypatchié.
Este es el código:
class Regexp
alias_method
ld_rapidito_inspect, :inspect
def inspect
@inspect = old_rapidito_inspect if @inspect.nil?
@inspect
end
def eql?( other )
false if other.class != Regexp
self.inspect == other.inspect
end
alias_method :"==", :eql?
def hash
self.inspect.hash
end
end
Esta corrección me anduvo con la siguiente versión de ruby:
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Espero que les sirva.
Happy hacking,
Aureliano.
(Via aurelianito.) Original Link: Patch en Regexp para poder usarlas como clave en un Hash
Posted: July 1st, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, how-to | Tags: how-to, Open Source, Programming, trac | No Comments »
Como les estuve contando, sigo escribiendo mi wiki. Ya parsea un subconjunto interesante del lenguaje definido por trac.
Siguiendo la tradición, les cuento como está avanzando el tokenizer. Al tokenizer lo simplifiqué para que devuelva la expresión regular que matcheo junto con el match (en vez del “tipo”). Esto hizo que la interfase para definir las reglas para tokenizar sea más simple. Si no hay ninguna regla que matchee sigue devolviendo ["string", :text].
Sin más, acá el código:
module Rapidito
class Tokenizer
def initialize( *delimiters )
@delimiter_list = delimiters + [/\z/]
@match_cache = nil
end
def source
valid_cache? ? @match_cache[0].to_s + @source : @source
end
def source=(s)
@match_cache = nil
@source = s
end
def has_next?
!@source.empty? || valid_cache?
end
def valid_cache?
(!@match_cache.nil?) && (@match_cache[0].to_s.length > 0)
end
def next_match
@delimiter_list.map {|regex| [regex.match(@source),regex]}.reject {|p| p[0].nil?}.inject do
|better,new|
better_pos = better[0].pre_match.length
new_pos = new[0].pre_match.length
if better_pos < new_pos
better
elsif new_pos < better_pos
new
elsif better[0].to_s.length > new[0].to_s.length
better
else
new
end
end
end
def next_token
if @match_cache #cached delimiter
rv = @match_cache
@match_cache = nil
return rv
end
match = next_match
p = match[0].pre_match.length
@source = @source[p + match[0].to_s.length, @source.length]
if p == 0 #delimiter
match
else #text
@match_cache = match
[match[0].pre_match, :text]
end
end
def all_tokens
tokens = []
while has_next?
tokens << next_token
end
tokens
end
end
end
Y si miran los tests de unidad, van a ver que también quedaron más lindos:
require 'test/unit'
require 'rapidito/tokenizer'
include Rapidito
class TokenizerTest < Test::Unit::TestCase
def test_no_token
tok = Tokenizer.new
tok.source = "aaaa"
assert_equal true, tok.has_next?
assert_equal ["aaaa", :text], tok.next_token
assert_equal false, tok.has_next?
end
def assert_all_tokens( expected, tokenizer )
assert_equal expected,
tokenizer.all_tokens.map { |token, kind| [token.to_s, kind] }
end
def test_two_delimiters
tok = Tokenizer.new(
/\|/, /;;/
)
tok.source = "aa|bbb;;;;cccc"
assert_all_tokens \
[ ["aa", :text], ["|", /\|/], ["bbb", :text],
[";;", /;;/], [";;", /;;/], ["cccc", :text] ],
tok
tok.source = "aa;;bbb||cccc"
assert_all_tokens \
[ ["aa", :text], [";;", /;;/], ["bbb", :text],
["|", /\|/], ["|", /\|/], ["cccc", :text] ],
tok
end
def test_choose_longest_match
tok = Tokenizer.new(
/aa/, /aaa/
)
tok.source = "aaaa"
assert_all_tokens [ ["aaa", /aaa/], ["a", :text ] ], tok
end
def test_reset_precache
tok = Tokenizer.new(
/\|/, /,/
)
tok.source = "original start|original end"
tok.next_token
tok.source = "new start,new end"
assert_equal ["new start", :text], tok.next_token
end
def test_almost_finished
tok = Tokenizer.new( /!/ )
tok.source = "bang!"
tok.next_token
assert_equal true, tok.has_next?
tok.next_token
assert_equal false, tok.has_next?
end
def test_carriage_return_ending
tok = Tokenizer.new( /!/ )
tok.source = "bang!\n"
tok.next_token
assert_equal true, tok.has_next?
tok.next_token
assert_equal true, tok.has_next?
assert_equal "\n", tok.next_token[0].to_s
assert_equal false, tok.has_next?
end
def test_transparent_caching
tok = Tokenizer.new( /!/ )
tok.source = "bang!pum"
tok.next_token
assert_equal "!pum", tok.source
end
def test_match_klass
tok = Tokenizer.new( /!/ )
tok.source = "!bang!pum"
assert_equal \
[MatchData, String, MatchData, String],
tok.all_tokens.map { |tok, kind| tok.class }
end
end
Happy hacking,
Aureliano.
(Via aurelianito.) Original Link: Más rapidito
Posted: June 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming | Tags: Heroes, Open Source, Programming, Ruby | 1 Comment »
This week I’m happy to tell you about a new set of articles which will be appearing here on the Rails blog called “Community Highlights”. This new series will feature people/projects/sites from the Rails community that may deserve a little extra recognition.
This week, we’re going to start with a few people who received awards on stage at Railsconf 2009, this years Ruby Heroes.
Brian Helmkamp

Brian has been a contributing member of the Ruby community for 4 years now, but is most well known for his testing library
Webrat. He’s a contributer to Rails, RSpec, Rubinius, and is a co-author on the recent
RSpec Book. More recently he’s been helping out the Rails core team with Rack:Test, and Rack:Debug.
His Blog: http://www.brynary.com/
Twitter: brynary
Aman Gupta

Aman has taken over the maintenance, new features, and the recent releases of
EventMachine, which is an invaluable tool for writing fast ruby applications. He’s also the author behind
amqp &
xmpp4em gems which are deployed far and wide.
Github: http://github.com/tmm1
Twitter: tmm1
Luis Lavena

Pat Allan

Pat is the mastermind behind
Thinking Sphinx which has become a standard when it comes to full-text search in Rails. He’s also one of the guys that has helped create the phenomenon known as
Railscamp, where I hear he makes some killer pancakes.
His Blog: http://freelancing-gods.com/
Twitter: Pat
Dan Kubb

Dan been tirelessly working on one of the hardest Ruby projects around,
DataMapper. He became the official maintainer after Sam Smoot and since then has completely rewritten the test suite to give DataMapper better coverage, has come up with a viable path to completion, and is currently working on making sure DataMapper works great with Rails 3.
Github: http://github.com/dkubb
Twitter: dkubb
John Nunemaker

Those are your six Ruby Hero’s for 2009. If you’re interested you can also watch a video of the award ceremony which talks more about the methodology about how they were chosen and see 5 of these guys receive their awards on stage at Railsconf 2009.
(Via Riding Rails.) Original Link: Community Highlights: Ruby Heroes
Posted: June 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, how-to | Tags: Open Source, Programming, regexp, Ruby | No Comments »
Como les conté acá y acá, estoy escribiendo un tokenizador para un wiki que estoy programando. Y hoy me encontré con una cosa muy extraña de las expresiones regulares.
En ruby la función match sirve para buscar el primer match de una regex dentro de un string. Por ejemplo (usando el irb):
irb(main):001:0> m = /a/.match "babab"
=> #<MatchData "a">
irb(main):002:0> m.pre_match
=> "b"
irb(main):003:0> m[0]
=> "a"
En particular, el pre_match es lo que está antes del match en el string. También según había entendido (mal) /\Z/ matchea con el final del string. Por ejemplo:
irb(main):004:0> m = /\Z/.match "hola"
=> #<MatchData "">
irb(main):005:0> m.pre_match
=> "hola"
Pero, /\Z/ tiene un comportamiento muy extraño, aunque documentado, cuando el último caracter antes del final es un \n. Lo que pasa es que el pre_match queda ¡sin el\n del final!. Lo muestro en el irb:
irb(main):006:0> m = /\Z/.match "\n"
=> #<MatchData "">
irb(main):007:0> m.pre_match
=> ""
Para que no se manduque el \n, hay que usar /\z/ (¡en minúscula!):
irb(main):008:0> m = /\z/.match "\n"
=> #<MatchData "">
irb(main):009:0> m.pre_match
=> "\n"
Por lo tanto tuve que tocar el tokenizer, ahora la función de initialize quedó así (miren el cambio de la "Z" a "z"):
def initialize( delimiters )
@delimiter_list = [[/\z/, :finish]] +
delimiters.to_a.map { |k,arr| arr.map { |re| [re, k] } }.inject([]) { |ac,ps| ac + ps }
@match_cache = nil
end
Y el test que captura el problema que genera usar \Z en vez de \z quedó así:
def test_carriage_return_ending
tok = Tokenizer.new( :a_kind => [/!/] )
tok.source = "bang!\n"
tok.next_token
assert_equal true, tok.has_next?
tok.next_token
assert_equal true, tok.has_next?
assert_equal "\n", tok.next_token[0].to_s
assert_equal false, tok.has_next?
end
Happy hacking,
Aureliano.
(Via aurelianito.) Original Link: Pequeñas delicias de las expresiones regulares
Posted: June 13th, 2009 | Author: FreedomCoder | Filed under: Open Source, Programming, Windows | Tags: Open Source, Programming, RubyInstaller, Windows | No Comments »
So, guess what? There are already 3 designers running for the pledgie prize collected for One-Click Installer new home!
Check those over there:
http://wiki.github.com/oneclick/rubyinstaller/website-contest
This is excellent news. Thank you guys for participating!
Deadline
I’m aiming to close submissions June 19, 2009. So if you have a design or idea, mock it up and add to the wiki page, point to a blog post or something and let the public know you’re participating!
Logo
As Pavel mentioned over the wiki page:
I like it, but I was not sure about the shape of ruby gem.
This is something weird since Ruby users are used to see Ruby logo with the shape of a diamond, which is incorrect.
Let me explain it better: the mineral ruby can be cut in diamond shape, but is really uncommon.
More common shapes are facetted balls or emerald cuts. Take a look here for more examples.
Almost every package, tool or library associated with Ruby tends to use a diamond cut ruby as logo.
When analyzed this detail with Rodolfo Budeguer from Estudio Domo, we found that sticking to that shape would not only fall into the repetition (and be a copycat), but also move away from the goal of it.
If you pay close attention, will noticed that the emerald cut of RubyInstaller shows the 4 colors that are also present in… the Windows logo.
Why is that? Well, because is Ruby Installer for Windows
Voting and Deliverables
Once again, would like to mention public voting would define the selected design. No new design will be accepted after the deadline above mentioned. So make room to do the mockups soon!
Also, once we have the final votes for the designs. Selected designer should provide generated versions of mockups in CSS and HTML content, preferable in a public Git repository.
I’m so excited about this that I’m blogging at 4am!
Thanks again to Silviu, Francesco and Pavel to contribute and participate. Also other people that privately sent some feedback about RubyInstaller itself, not just the website
(Via DEV_MEM.dump_to(:blog) – Multimedia systems blog.) Original Link: RubyInstaller: designs and deadline details