Refactoring: Ruby Edition

The Definitive Refactoring Guide, Fully Revamped for Ruby With refactoring, programmers can transform even the most chaotic software into well-designed systems that are far easier to evolve and maintain. What’s more, they can do it one step at a time, through a series of simple, proven steps. Now, there’s an authoritative and extensively updated version of Martin Fowler’s classic refactoring book that utilizes Ruby examples and idioms throughout–not code adapted from Java or any other environment.

The authors introduce a detailed catalog of more than 70 proven Ruby refactorings, with specific guidance on when to apply each of them, step-by-step instructions for using them, and example code illustrating how they work. Many of the authors‘ refactorings use powerful Ruby-specific features, and all code samples are available for download. Leveraging Fowler’s original concepts, the authors show how to perform refactoring in a controlled, efficient, incremental manner, so you methodically improve your code’s structure without introducing new bugs. Whatever your role in writing or maintaining Ruby code, this book will be an indispensable resource. This book will help you / Understand the core principles of refactoring and the reasons for doing it / Recognize „bad smells“ in your Ruby code / Rework bad designs into well-designed code, one step at a time / Build tests to make sure your refactorings work properly / Understand the challenges of refactoring and how they can be overcome / Compose methods to package code properly / Move features between objects to place responsibilities where they fit best / Organize data to make it easier to work with / Simplify conditional expressions and make more effective use of polymorphism / Create interfaces that are easier to understand and use / Generalize more effectively / Perform larger refactorings that transform entire software systems and may take months or years / Successfully refactor Ruby on Rails code

RubyMine in Version 2.0 erschienen

Jetbrains hat heute seine Ruby/Rails-IDE RubyMine in der Version 2.0 veröffentlicht. RubyMine unterstützt nun auch Ruby 1.9 und auch die weiteren/neuen Funktionen hören sich vielversprechend an.

RubyMine ist für bestehende Kunden kostenlos als Upgrade verfügbar und für Neukunden würden 99$ anfallen.

Eine Liste mit allen Funktionen, Neuerungen und Preisen können auf der Produktseite bei Jetbrains nachgeschlagen werden: http://www.jetbrains.com/ruby/whatsnew/

Professional IronRuby

Eine umfassende Einführung in die Vorteile der .NET Entwicklung mit IronRuby.
Vorkenntnisse in Ruby sind nicht erforderlich.

Gibt einen fundierten Überblick über alle wichtigen Aspekte – angefangen bei Grundlagen und Struktur der Ruby Syntax, über .NET und Ruby Interoperabilität, bis hin zu IronRuby und ASP.NET und IronRuby und Silverlight.

Mit präzisen Schritt-für-Schritt-Anleitungen für die praktische Umsetzung und nützlichen Tipps, wann man IronRuby und wann besser C# nutzen sollte.

Mit einer umfangreichen Materialsammlung und begleitender Website.

Screencast: Declarative Authorization

Benutzer-Authorisierung wird in vielen, wenn nicht sogar in den meisten, Applikationen benötigt. Wie dies umgesetzt werden kann zeigt Ryan in seinem dieswöchigen Screencast.

Dowload:
Download (36.4 MB, 15:27)
Alternative download für iPod & Apple TV (21.6 MB, 15:27)


Resourcen:

Quellcode:

[bash]
sudo rake gems:install
[/bash]

[ruby]
# config/environment.rb
config.gem "declarative_authorization", :source => "http://gemcutter.org"

# config/authorization_rules.rb
authorization do
role :admin do
has_permission_on [:articles, :comments], :to => [:index, :show, :new, :create, :edit, :update, :destroy]
end

role :guest do
has_permission_on :articles, :to => [:index, :show]
has_permission_on :comments, :to => [:new, :create]
has_permission_on :comments, :to => [:edit, :update] do
if_attribute :user => is { user }
end
end

role :moderator do
includes :guest
has_permission_on :comments, :to => [:edit, :update]
end

role :author do
includes :guest
has_permission_on :articles, :to => [:new, :create]
has_permission_on :articles, :to => [:edit, :update] do
if_attribute :user => is { user }
end
end
end

# application_controller.rb
before_filter { |c| Authorization.current_user = c.current_user }

protected

def permission_denied
flash[:error] = "Sorry, you are not allowed to access that page."
redirect_to root_url
end

# articles_controller.rb
filter_resource_access
[/ruby]

[html]
<!– articles/show.html.erb –>
<p>
<% if permitted_to? :edit, @article %>
<%= link_to "Edit", edit_article_path(@article) %> |
<% end %>
<% if permitted_to? :destroy, @article %>
<%= link_to "Destroy", @article, :method => :delete, :confirm => "Are you sure?" %> |
<% end %>
<%= link_to "Back to Articles", articles_path %>
</p>

<p>
<% if permitted_to? :edit, comment %>
<%= link_to "Edit", edit_comment_path(comment) %>
<% end %>
<% if permitted_to? :destroy, comment %>
| <%= link_to "Destroy", comment, :method => :delete, :confirm => "Are you sure?" %>
<% end %>
</p>

<!– articles/index.html.erb –>
<% if permitted_to? :create, Article.new %>
<p><%= link_to "New Article", new_article_path %></p>
<% end %>
[/html]

Web 2.0 mit Ruby on Rails

Das Buch ermöglicht einen schnellen, praxisorientierten Einstieg in Web-2.0-Technologien und setzt keine Vorkenntnisse in den beschriebenen Technologien voraus. Der Leser kann mit Hilfe des Buches eine datenbankgestützte Web-2.0-Anwendung bauen.

Bettina Stracke arbeitet als freiberufliche IT-Architektin in der Nähe von München. Als Software-Ingenieurin und IT-Beraterin, beispielsweise für die Siemens AG, hat sie sehr viel Fachwissen und Erfahrung gesammelt, die sie unter anderem in ihrem Buch wiedergibt.

Emails mit Ruby verschicken

Um mit Ruby Emails zu verschicken gibt momentan einige Möglichkeiten die Quasi-Standard geworden sind. Zum einen Net::SMTP oder TMail und natürlich als Teil von Ruby on Rails den ActionMailer. Zu diesen drei Lösungen gibt es seit kurzem auch noch mail von Mikel Lindsaar.

Die Bibliothek Mail ist Ruby geschrieben und bringt alles mit um Email zu verschicken. Mit Mail können Email generiert, geparst und verschickt werden.

Um nicht innerhalb kürzester Zeit veraltet zu sein, wurde die Unterstützung für Ruby 1.9 von Anfang berücksichtigt.

Laut Mikel soll Mail 100% Spezifikations-Abdeckung bieten.

Die Projektseiten bieten viele Beispiele und die Bibliothek ist sicherlich einen Blick wert, wenn die eigene Applikation auch Emails unterstützen soll.

Ein kurzes Beispiel (Mail incl. Attachement) wie Mail benutzt werden kann:

[ruby]
Mail.defaults do
smtp ‚ip.oder.host.com‘ # Port 25 defult
end

mail = Mail.new do
from ’sender@example.com‘
to ‚empfaenger@example.com‘
subject ‚Ein sinnvoller Betreff‘
body File.read(‚mail-text.txt‘)
add_file {:filename => ‚einegrafik.png‘, :data => File.read(‚/pfad/zu/einer/grafik.png‘)}
end

mail.deliver!
[/ruby]

Mail ist auf Github zuhause: http://github.com/mikel/mail

Flexible Rails. Flex 3 auf Rails 2

PROFIWISSEN ZUM DREAM-TEAM
– Praxis-Know-How pur: Mit einer vollständigen, professionellen Flex-on-Rails-Anwendung, die Sie in Ihrem Projekt weiterverwenden können
– Basiert auf Flex 3 und Rails 2
– Behandelt auch Rails on AIR und die Adobe Integrated Runtime
– Im Internet: Der Source-Code der Beispielanwendung

Flex und Rails ergänzen sich großartig. Beide Frameworks für die Entwicklung von Webanwendungen sind als Open Source frei verfügbar. Wenn Sie Flex auf der Ruby-getriebenen Plattform Rails betreiben, entsteht gleichsam der Ferrari der Webprogrammierung – außen schick, innen schnell und mit einem unglaublichen Fahrgefühl. Flex bietet erstaunliche neue Optionen für das User-Interface, die mit den schnellen Entwicklungszyklen von Rails hervorragend ausgeschöpft werden.
Dieses Praxisbuch vermittelt Techniken für Flex 3 auf Rails 2 auf sehr effektive Weise: Schritt für Schritt wird in den Kapiteln eine realistische Anwendung ausgebaut. Sie erfahren, wie sich Flex und Rails mit HTTPService und XML integrieren lassen, und wie der RESTful-Controller-Entwurf sowohl Flex- als auch HTML-Clients unterstützt. Unterwegs lernen Sie das MVC-Framework Cairngorm in großen Flex-Anwendungen einzusetzen und arbeiten mit dem RubyAMF Flash Remoting-Gateway.
Als Entwickler von Web- und Desktop-Benutzeroberflächen werden Sie von diesem praxisorientierten, Code-lastigen und gut lesbaren Buch profitieren, selbst wenn Sie für Rails nur Vorkenntnisse auf „Hello World“-Niveau und für Flex keinerlei Erfahrungen mitbringen.
„In diesem Buch verfolge ich den Ansatz, Sie tief in die Welt von Flex und Rails eintauchen zu lassen. Anstatt Ihnen langweilige Theorie und an den Haaren herbeigezogene Beispiele zu servieren, werden wir gemeinsam eine echte Anwendung entwickeln und in diesem Prozess alles Nötige lernen.“ Peter Armstrong

„…ein erstklassiges Lernerlebnis mit gewaltigem Nutzen: Nicht verpassen!“
Louis F. Springer, Sun Microsystems

Das Ruby-Praxisbuch: Ruby-Code schnell verstehen und einsetzen

Ruby gilt als der neue Star unter den Programmiersprachen – ihre zahl-reichen Anhänger sind vor allem von ihrer eleganten Syntax und ihrer einfachen Erlernbarkeit begeistert. Seit 2004 ist zudem das Framework Ruby on Rails verfügbar, das viele Entwicklungsaufgaben radikal vereinfacht. Ruby ist damit zu einem ernsthaften Konkurrenten von Java in der Anwendungsprogrammierung für das Web geworden. Das Motto des Buchs lautet: keine lange Theorie! Anhand zahlreicher anschaulicher Codebeispiele vermittelt Kevin C. Baird die zentralen Konzepte der Sprache und bietet somit einen praxisorientierten Überblick.

Auf Du und Du mit Ruby Mit dem kommandozeilenorientierten Werkzeug IRB unterstützt Ruby einen sehr direkten, interaktiven Programmieransatz. Der Autor gibt eine Einführung in IRB und vermittelt dabei einen Einblick in die Philosophie, nach der Ruby Informationen verarbeitet. Grundtechniken Ruby ist komplett objektorientiert, verzichtet jedoch größtenteils auf den formalen Overhead anderer OO-Sprachen wie etwa Java. Ruby-Skripte lassen sich daher sehr intuitiv gestalten. Der Autor stellt die Grundlagen vor und dokumentiert sie an Skriptbeispielen, die ausführlich erklärt werden. Funktionale Programmierung Ruby enthält funktionale Ansätze – das erlaubt das Behandeln mathematischer Funktionen als Objekte. Dadurch minimiert sich unter anderem die Notwendigkeit, Schleifen zu benutzen, der Code wird kürzer und übersichtlicher. Codestücke zeigen, wie diese funktionalen Konzepte vorteilhaft genutzt werden können. Erste Schritte mit Ruby on Rails Das Framework Ruby on Rails schickt sich an, Java zunehmend den Rang abzulaufen: Gerade im Webumfeld erleichtert es viele mühsame Programmier-aufgaben deutlich. Anhand eines anschaulichen Beispiels zeigt der Autor, wie Rails-Projekte aufgesetzt werden und welche Komponenten dafür nötig sind.

Neues Hpricot Release 0.8.2

Obwohl die Newsmeldung bereits ein paar Tage alt ist, wollen wir es euch nicht vorenthalten: Hpricot ist in einer neuen Version erschienen. Die Version 0.8.2 behebt unter anderem einen bekannt Bug der in Kombiantion mit JRuby auftrat.

Hpricot soll nun resourcenschonender arbeiten und sich nun auch unter Ruby 1.9 kompilieren lassen.

Weitere Details findet ihr auf den Gitseiten des Projekts: http://github.com/whymirror/hpricot

Produktiv programmieren

Wer seine Brötchen mit Software-Entwicklung verdient, braucht Strategien, um besser, schneller und kostengünstiger zu programmieren. Dieses Buch bietet Ihnen erprobte Hilfsmittel, die Zeit sparen, Ihre Produktivität erhöhen, und die Sie unabhängig von der verwendeten Plattform auf der Stelle nutzen können. Meister-Programmierer Neal Ford vermittelt nicht nur Einsichten in die Mechanismen der Produktivität, sondern gibt darüber hinaus zahlreiche wertvolle Praxistipps, die helfen, Ihren Code zu verbessern und verbreitete Fallen zu umgehen.

Erfahren Sie, wie Sie * erst die Tests und dann den zugehörigen Code schreiben, * den Lebenszyklus Ihrer Objekte präzise planen, * sich auf die Implementierung der aktuellen Anforderungen beschränken, * antike Philosophie auf die Software-Entwicklung übertragen, * Autoritäten infrage stellen und nicht blind Standards folgen, * durch Metaprogrammierung schwierige Dinge einfacher und unmögliche Dinge möglich machen, * auf ein einheitliches Abstraktionsniveau innerhalb von Methoden achten, * den richtigen Editor und die besten Hilfsmittel für Ihre Arbeit auswählen.

Was Sie hier lesen, ist keine trockene Theorie, sondern die Essenz aus Neal Fords langjähriger Erfahrung als IT-Consultant. Egal, ob Sie Einsteiger oder Profi sind – die einfachen und gradlinigen Prinzipien, die dieses Buch vermittelt, werden Ihnen zu spürbar besseren Arbeitsergebnissen verhelfen.

Neal Ford arbeitet als Anwendungsarchitekt bei ThoughtWorks, einem globalen IT-Consulting-Unternehmen. Sein Beratungsschwerpunkt liegt auf dem Entwurf und der Umsetzung von Enterprise-Applikationen, außerdem führt er Schulungen bei Großunternehmen im In- und Ausland durch.