RubyFlow : The Ruby Community Blog

Home   Submit   Sign Up   Log In   leaders   Twitter   RSS Feed  

jodosha — 25 posts

Learn from past mistakes, clarify goals, communicate intent, Core Team and priorities such as stability and security. This is the new Lotus roadmap.
Lotus v0.2.0 is out!
This has been a great year for Lotus.
It went from a tiny side project to one of the most appreciated and promising web frameworks for Ruby.

Today v0.2.0 is out. A release with a lot of new features, code generators.

[Read the 2014 Retrospective + The Announcement]
Data validation is an important piece in software architecture. Delegating this responsibility to models increase the cost of maintenance. Lotus offers a different and powerful approach to the problem.

[read the announcement]
Writing detailed documentation helps to improve software design. Explaining the intent mitigates inconsistencies and helps other people to understand our initial idea.

We'll discover why the semantic of the raised exceptions is important to write solid API interfaces.

[Read the article]
Introducing Lotus
Lotus is a complete web framework for Ruby with a strong emphasis on object oriented design and testability. If you use it, you employ less DSLs and more objects, zero monkey-patching, separation of concerns between MVC layers. Each library is designed to be small, fast and testable.

read the announcement
A few days ago Aaron Patterson wrote a interesting article about composition vs inheritance with Ruby.
Composition should be preferred, but beware of the unexpected behaviors. This is my personal experience: Three Things To Know About Composition.
Rails is not dead. Debating about things such as the hexagonal architecture isn’t an assault to the framework, but a way to evolve as a programmers. If the leaders of this community feel under attack, we have a problem. Please speak up.

Read more
All these discussions about software design are missing one detail: we are all wrong.

Everyone has a vision that can be found great by some people, and deprecable by others.
When it comes to talk about opinions this is the way that things work.

If nobody's right, we're all wrong.

Continue reading
Almost all the Ruby frameworks for the Model layer mix up business logic with database details. This kind of architecture leads to god classes, slow build times and to a general bad design. These problems are well known to legacy projects’s maintainers.

What if we assign these roles to smaller components that are able to collaborate together? Imagine how life changing would be to work just with objects, without worrying how to persist them. How easy and fast would be testing them? How small and well defined would be your objects?

Let me introduce Lotus::Model.
Most of the Lotus frameworks was released in the past months.
The main Lotus gem isn't out yet.

This gist has a simplified version of Lotus, and it shows how to build a full stack application today.
Moore's law is over. Modern computation is exploited by running processes on multiple cores.

Ruby has always ignored this trend, and the community didn't put enough attention on this topic.

The VM allocates a memory heap, which is shared and writable by threads. If incorrectly coordinated, those threads can lead to unexpected behaviors.

[Continue reading]
Introducing Lotus::View
The missing part of all the Ruby web frameworks is the distinction between views and templates.

Keeping things separated, helps to declutter templates and models from presentation logic. Also, since views are objects they are easily testable. If you ever used Mustache, you are already aware of the advantages.

Lotus::View is based on these simple concepts.
[Continue reading]
MRuby is a lightweight Ruby. It was created by Matz with the purpose of having an embeddable version of the language. This article covers how to enable Redis scripting with Ruby.
Lotus development is going well. This month, I’m proud to announce Lotus::Controller. It’s a small, powerful and fast Rack framework.

Read the article
Watch me during a short TDD session, while I create routing helpers with Lotus.
The beauty of Lotus is the composition of its frameworks. Each of them is well designed to achieve one and only one goal. The main advantage of this architecture is that delevopers can easily use and reuse those frameworks in countless ways.
Lotus::Router accepts anonymous functions as endpoints. This feature can be used to build Sinatra with it.

Read the article
Lotus::Router is an HTTP Router for Ruby, it’s fast, lightweight and compatible with the Rack protocol.

It’s designed to work as a standalone software or within a context of a Lotus application, and provides features such as: fixed and partial URL matching, redirect, namespaces, named routes and RESTful resource(s).

Read the announcement
I’m pleased to announce Lotus: the Open Source project I’ve conceived, hacked and built during the last year.

Lotus is a full stack web framework for Ruby, built with lightness, performances and testability in mind. It aims to bring back Object Oriented Programming to web development, leveraging on stable APIs, a minimal DSL, and plain objects.
I just open sourced Minegems: a multi-tenancy private gem hosting deployable on Heroku.
Redis Store is a successful OSS project, it aims to be a multi-purpose toolkit for Ruby and for the most popular web frameworks.

After four years, I'd like to focus on something else. Would *you* give back to the Community? If so, please ping me on Twitter (@jodosha).
Article about HTML5 Geolocation API testing with Cucumber and Capybara.
How many times do you heard you should separate content from behavior? Never? Hmmm don't try to cheat me.. So, why do you still use :confirm option for link_to helper? Here a little snippet to archive our goal, and as extra bonus, we get it i18n.
Memoria is a tiny Sinatra web application for Redis statistics.
When we have released adva-cms 0.2.0 we have migrated all the Prototype code to jQuery. What I noticed was the lack of a valid automation support for QUnit, the test framework used internally by the jQuery team. So, in a couple of days I built what we need, just creating a custom version of jstest.rb and changing a little bit QUnit, in order to communicate with it. The result is Hanoi, a general purpose test runner for JavaScript.
As announced in my previous post I'm working to update my Open Source projects. Today's the time of Click to Globalize.
For all of you who don't know what I'm talking about, Click to Globalize is a Rails plugin for in-place translations. Now it's compatible with Rails 2.3 and It's also the most clean and polish version of ever, let me explain what's changed. read more..