Prepare for Rails 2.0: Deprecations

Едно от най-важните неща при промяната на нови версии на framework-ове от типа на rails, а и на програмните езици като цяло, са т.нар. deprecations. “Остаряването” на определени методи обикновено се диктува от появата на заместители с по-изчистен интерфейс, или на изцяло пренаписани такива, и поне за мен винаги е било знак за усъвършенстване.

За жалост, понякога изхвърлянето на методи може да доведе до сериозни главоболия, имам доста неприятни спомени, свързани с половинчати изпълнения в Java, затова по принцип deprecation-ите са едно от първите неща, които проверявам още при анонсирането на нова версия.

Промените в Rails не са кой знае колко значителни, а някои deprecation-и вече бяха намерили място в 1.2 сериите. Тук можете да видите списък с остарелите методи, както и препоръки с какво как да ги заместите:

Action Pack

  • components
    use partials and helper methods instead
  • @params, @session, @flash, @request, @cookies, @headers, @response
    Use the params, session, flash, etc methods instead of working with the instance variables directly.
  • url_for(:symbol, *args), redirect_to(:symbol, *args)
    use named routes instead
  • render_text, render_template, etc.
    Use e.g. render :text => …, render :template => …, etc.
  • redirect_to_path, redirect_to_url
    Use redirect_to.
  • post_format, formatted_post?, xml_post?, yaml_post?
    Use respond_to or request.format
  • start_form_tag and end_form_tag
    Use form_tag with a block.
  • update_element_function
    use RJS
  • link_to_image, link_image_to helper methods
    use link_to(image_tag(..), url)
  • human_size helper alias
    use number_to_human_size helper method

Active Record

  • find_first, find_all
    Use find :first and find :all
  • push_with_attributes
    Use has_many :through for rich many-to-many associations
  • *association*_count
    Use *association*.count instead

Railties

  • Non-namespaced rake tasks like rake migrate
    Use rake db:migrate

Неприятното в случая е, че ще трябва да преровите всички файлове за да се уверите, че не съдържат някой от методите по-горе. Вярно, grep е прекрасен инструмент, но и ruby не е за подценяване. Ето един rake task, който преглежда кода за deprecated методи:

Download deprecated.rake (1,9 KB)

Запишете го в директория lib/tasks на проекта и го стартирайте с:

$ rake deprecated

Маркери: ,

За тази статия



Категории

Подобни статии