Переносим БД с PHP на Rails при помощи Rake (часть 2)

Однако в Rake content_tag и link_to работать не захотело.
Я сделал так:
require 'action_view/helpers/tag_helper'
  require 'action_view/helpers/url_helper'
  class Helpers
    include ActionView::Helpers::TagHelper
    include ActionView::Helpers::UrlHelper
  end


А потом в file_div(files) породил экземпляр help= Helpers.new
от которого и вызвал нужные функции.
Уж не знаю на сколько криво я это сделал — но оно работает и это главное =)

require 'action_view/helpers/tag_helper'
  require 'action_view/helpers/url_helper'
  class Helpers
    include ActionView::Helpers::TagHelper
    include ActionView::Helpers::UrlHelper
  end 
 
  def file_div(files)
    help= Helpers.new
    res= ""
    files.each do |f|
      res<< help.content_tag(:li, help.link_to(f.Description, f.Path) )
    end
    res= help.content_tag(:ul, res, :class=>:linked_files)
  end


Ну и собственно получил

namespace :db do
  namespace :import do
  
    # rake db:import:start
    desc 'import data form OldSite'
    task :start => :environment do
    class OldSiteConnect < ActiveRecord::Base
        establish_connection(
          :adapter  => "mysql",
          :host     => "localhost",
          :username => "root",
          :password => "",
          :database => "OldSite",
          :encoding => "utf8"
        )
    end
    
    require 'action_view/helpers/tag_helper'
    require 'action_view/helpers/url_helper'
    class Helpers
      include ActionView::Helpers::TagHelper
      include ActionView::Helpers::UrlHelper
    end 
 
    def file_div(files)
      help= Helpers.new
      res= ""
      files.each do |f|
        res<< help.content_tag(:li, help.link_to(f.Description, f.Path) )
      end
      res= help.content_tag(:ul, res, :class=>:linked_files)
    end
    
    logins= %w{ town1 town2 town3 town4 town5 }
    
      logins.each do |login|
        user= User.find_by_login(login)
        
        eval("
          class OldSiteSection < OldSiteConnect
              set_table_name '#{login}_sections'
          end    
          class OldSitePage < OldSiteConnect
              set_table_name '#{login}_pages'
          end
          class OldSiteLinkedFiles < OldSiteConnect
              set_table_name '#{login}_linked_files'
          end
        ")
        
        #OldSitePage.find:first
        sections= OldSiteSection.find(:all,  :order=>"Prev_Id ASC")
        ids_set= Hash.new
        
        sections.each do |s|
          # Старый id страницы
          old_id= s.Page_Id
          # Старая страница
          basic_page= OldSitePage.find(old_id) 
 
          # Найти файлы если они прикреплены к странице
          files= OldSiteLinkedFiles.find(:all, :conditions => ['Page_Id = ? and Linked = ?', old_id, 1]) 
 
          title= basic_page.Description.gsub(">", '>').gsub("<", '<').gsub(""", "'")
          content= basic_page.Content.gsub(">", '>').gsub("<", '<').gsub(""", "'")
          
          # Добавим список прикрепленных файлов
          (content = content + file_div(files) ) unless files.empty?
          
          # Поправим все пути
          content= content.gsub("./files/common/", "/uploads/files/#{login}/")
          content= content.gsub("./files/pages/", "/uploads/files/#{login}/")
          content= content.gsub("./files/#{login}/common/", "/uploads/files/#{login}/")
          content= content.gsub("./files/#{login}/pages/", "/uploads/files/#{login}/") 
 
          page= Page.new( :user_id=>user.id,
                          :title=>title,
                          :content=>content
                         )
          page.save
          new_id= page.id
          # Добавить в список соответствий id
          # Если в спискок родителей имеет такой id
          page.move_to_child_of(Page.find(ids_set[s.Prev_Id])) if ids_set[s.Prev_Id]
          ids_set[old_id] = new_id
        end# sections.each do |s|
      end# logins.each do |login|
    end# db:import:start
  end# db:import
end#:db 
 


Илья Зыкин aka Killich (Илья Зыкин aka Зайко)
Учитель школьной информатики, Аспирант, ROR дилетант широкого профиля.
ruby on rails 2.3.2 winXP, FreeBSD, RSpec, GIT, SVN, MySQL, InstantRails, REE, Passanger, Apache2.2
Отзывы/предложения/комментарии/вопросы — killich(дикий пёс)mail.ru
Обучение rails по email,icq, skype и т.д.


Форум:
pyha.ru/forum/topic/3165.0
Оригинал статьи для rubyclub.com.ua rubyclub.com.ua/messages/show/7312-%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%D0%B8%D0%BC-%D0%91%D0%94-%D1%81-PHP-%D0%BD%D0%B0-Rails-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D0%B8-Rake

Нет комментариев