teamon.eu

Merb - flash

31 października 2008

UPDATE: Zamiast calej zabawy - plugin merb-flash :)

Kontynuując serię o sztuczkach w Merbie tym razem przedstawię coś, czego najbardziej mi zabrakło - railsowego flasha.

Więcej... 5 komentarzy

Merb - kolorowy logger

31 października 2008

Merb wczoraj został wypuszczony na świat w wersji RC4. Z tej okazji* rozpoczynam cykl kilku postów z przydatnymi sztuczkami związanymi z tym właśnie frameworkiem. Na pierwszy ogień idzie kolorowanie wiadomości z merbowego loggera.

Więcej... 1 komentarz

Po MerbCampie

13 października 2008

Pare minut temu zakończył się MerbCamp. Slajdy z prezentacji można znależć na Slideshare, zapis video powinien być dostępny w ciągu paru dni na stronie głównej campa.

Ogólnie myśle, że spotkanie wypadło dobrze, całkiem sporo rzeczy zostało wyjaśnionych. Wystąpienia można było śledzić poprzez udostępniony webcast (w małej, jednak wystarczającej rozdzielczości). Osobiście z obejżanych prezentacji (przesunięcie czasu skutecznie przeszkodziło w śledzeniu wszystkich) najbardziej podobała mi się "Merb plumbing: The router" a także możliwość zadawania pytań na żywo poprzez IRC.

Jutro (a w sumie to dzisiaj) rano czasu polskiego powinien być dostępny Merb 0.9.9 RC1. Autorzy zapowiedzieli, że w ciągu paru tygodni powinna wyjść RC2, a następnie już 1.0 Final. Najważniejsze jednak, że publiczne api juz nie zostanie zmienione także można na spokojnie działac ;)

Jest 1:43, jutro na 8 do szkoły - chyba czas do spania...

[EDIT] Video z prezentacji już dosępne.
Dodaj komentarz

Merb rake stats

01 sierpnia 2008

Dzisiaj bez komentarza.

merb stats screenshot lib/tasks/stats.rake
 
desc "LOC statistic"
task :stats do
  STATISTICS_DIRS = {
    :controllers  => 'app/controllers',
    :helpers      => 'app/helpers',
    :models       => 'app/models',
    :lib          => 'lib',
    :spec         => 'spec'
  }
  EMPTY_STATS = { :lines => 0, :loc => 0, :classes => 0, :modules => 0, :methods => 0 }
 
  def show_line(name, stats, color = nil)
    ce = color ? "\033[0m" : ""
    puts  "| #{color}#{name.to_s.capitalize.ljust(20)}#{ce} " + 
          "| #{color}#{stats[:lines].to_s.rjust(7)}#{ce} " +
          "| #{color}#{stats[:loc].to_s.rjust(7)}#{ce} " +
          "| #{color}#{stats[:classes].to_s.rjust(7)}#{ce} " +
          "| #{color}#{stats[:modules].to_s.rjust(7)}#{ce} " +
          "| #{color}#{stats[:methods].to_s.rjust(7)}#{ce} |"
    puts separator
  end
 
  def separator
    '+----------------------+---------+---------+---------+---------+---------+'
  end
 
  def check_dir(dir)
    Dir.foreach(dir) do |file_name|
      if File.stat(dir / file_name).directory? and (/^\./ !~ file_name)
        check_dir(dir / file_name)
      end
 
      if file_name =~ /.*\.rb$/
        File.open(dir / file_name).each_line do |line|
          @stats[:lines]    += 1
          @stats[:loc]      += 1 unless line =~ /^\s*$/ || line =~ /^\s*#/
          @stats[:classes]  += 1 if line =~ /class [A-Z]/
          @stats[:modules]  += 1 if line =~ /module [A-Z]/
          @stats[:methods]  += 1 if line =~ /def [a-z]/
        end
      end
    end
  end
 
  @all = {}
  total = EMPTY_STATS.clone
  ce = "\033[0m"
  cb = "\033[35m"
  cg = "\033[4;32m"
  cr = "\033[31m"
 
  puts separator
  puts "| #{cg}Name#{ce}                 | #{cg}Lines#{ce}   | #{cg}LOC#{ce}     | #{cg}Classes#{ce} | #{cg}Modules#{ce} | #{cg}Methods#{ce} |"
  puts separator
 
  STATISTICS_DIRS.each_pair do |name, dir| 
    @stats = EMPTY_STATS.clone
    check_dir(dir)
    @all[name] = @stats
    show_line(name, @stats)
    @stats.each_pair { |type, count| total[type] += count }
  end
 
  show_line('Total', total, cr)
 
  code_loc = [:controllers, :helpers, :models].inject(0) { |sum, e| sum += @all[e][:loc] }
  test_loc = @all[:spec][:loc]
 
  puts "   Code LOC: #{cb}#{code_loc}#{ce}     Test LOC: #{cb}#{test_loc}#{ce}     Test to code radio:  #{cb}1:%0.2f#{ce}" % (test_loc.to_f / code_loc.to_f)
  puts
end
 
4 komentarze

Merb fixtures

30 lipca 2008

Ostatnio szukałem jakiegoś dobrego narzędzia do fixtures (nie mam pojęcia jak to można po polsku nazwa) w Merbie i znalazłem projekt na githubie merb-fixtures. Niestety okazało się, że sprawia pewne problemy w szczególności z dm-is-nested_set z paczki dm-more DataMappera. Jednak postanowiłem się nie poddawać i korzystając z kodu merb-fixtures napisać coś własnego.

Więcej... 1 komentarz