2013-02-15 5 views
0

Я проверил на вопросы, которые уже были заданы по этому вопросу,„Есть много“, но я не найти решение.Факер «Не знаю, как построить Задачу?

У меня есть довольно большая задача и имя файла является 'sample_employee_data.rake' ... так что здесь идет:

 namespace :db do 
     desc "Fill database with sample Employee data" 
     task populate: :environment do 

      @gender = ["Male", "Female"] 
      @role = ["Staff", "Support", "Team_Leader", "Manager", "Director"] 
      @marital_status = ["Single", "Married"] 
      @primary_position = ["Household", "Job Developer", "Job Coach", 
        "Job Support", "Personal Care"] 
      @trained_position = ["Household", "Job Developer", "Job Coach", 
        "Job Support", "Personal Care"] 
      @emer_contact_relationship = ["Friend", "Brother", "Sister", "Aunt", 
           "Uncle", "Cousin", "Nephew", "Father", 
           "Mother", "Spouse"] 

      def randomDate(params={}) 
      years_back = params[:year_range] || 5 
      latest_year = params[:year_latest] || 0 
      year = (rand * (years_back)).ceil + 
      (Time.now.year - latest_year - years_back) 
      month = (rand * 12).ceil 
      day = (rand * 31).ceil 
      series = [date = Time.local(year, month, day)] 
      if params[:series] 
       params[:series].each do |some_time_after| 
       series << series.last + (rand * some_time_after).ceil 
       end 
       return series 
       end 
       date 
      end 

      Employee.create!(first_name:  "Shelly", 
       last_name:     "Houghton", 
       mi:       "M", 
       full_name:     "Shelly M Houghton", 
       marital_status:    "Single",     
       gender:      "Female", 
       hire_date:     "2000-04-16", 
       primary_position:   "Manager", 
       trained_position:   "Job Developer", 
       email:      "[email protected]", 
       active:      true, 
       address1:     "76th Ave", 
       city:      "Frave", 
       zip_code:     "54806", 
       state:      "WI", 
       emp_home_ph:     "1-111-111-1111", 
       emp_mobile_ph:    "1-222-222-2222", 
       emer_contact_first_name:  "Kenneth", 
       emer_contact_last_name:  "Koening", 
       emer_contact_relationship: "Friend", 
       emer_contact_ph:    "1-333-333-3333", 
       role:      "Manager", 
       birth_date:     "1982-08-21", 
       admin:      true, 
       password:     "90nothguoh", 
       password_confirmation:  "90nothguoh") 

     99.times do |n| 
      first_name = Faker::Name.first_name 
      last_name = Faker::Name.last_name 
      mi = ("A".."Z").to_a[rand(26)] 
      full_name = Faker::Name.full_name 
      marital_status = @marital_status[rand(2)].to_s 
      gender = @gender[rand(2)].to_s 
      hire_date = randomDate(:year_range => 60, :year_latest => 12) 
      birth_date = randomDate(:year_range => 60, :year_latest => 22) 
      primary_position = @primary_position[rand(5)].to_s 
      trained_position = @trained_position[rand(5)].to_s 
      email = "emp-#{n+1}@example.org" 
      active = [true, false][rand(2)] 
      admin = (1 == rand(2) ? true : false) 
      role = @role[rand(5)].to_s 
      address1 = "Seaview-#{n+5}Way" 
      city = Faker::Lorem.words(1).to_s.capitalize 
      state = Faker::Address.us_state() 
      zip_code = Faker::Address.zip_code 
      emp_home_ph = Faker::PhoneNumber.phone_number 
      emp_mobile_ph = Faker::PhoneNumber.phone_number 
      emer_contact_first_name = Faker::Name.first_name 
      emer_contact_last_name = Faker::Name.last_name 
      emer_contact_relationship = @emer_contact_relationship[rand(10)].to_s 
      emer_contact_ph = Faker::PhoneNumber.phone_number 
      password = "uniqueone" 
      Employee.create!(first_name: first_name, mi: mi, last_name: last_name, 
        full_name: full_name, marital_status: marital_status, 
        gender: gender, birth_date: birth_date, hire_date: hire_date, 
        primary_position: primary_position, trained_position: 
        trained_position, email: email, role: role, address1: 
        address1, city: city, state: state, zip_code: zip_code, 
        emp_home_ph: emp_home_ph, emp_mobile_ph: emp_mobile_ph, 
        emer_contact_first_name: emer_contact_first_name, 
        emer_contact_last_name: emer_contact_last_name, 
        emer_contact_relationship: emer_contact_relationship, 
        emer_contact_ph: emer_contact_ph, password: password, 
        password_confirmation: password) 
     end 
     end 
    end 

Я побежал:

 rake sample_employee_data.rake 

и я получил этот флаг:

rake aborted! 
    Don't know how to build task 'sample_employee_data.rake' 
    home/me/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in 'eval' 
    home/me/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in '<main>' 

Может ли кто-нибудь выявить проблему ... мои извинения за такой длинный файл.

Спасибо.

+0

FYI, стандартный Rails-й способом получения семенных данных в базу данных является используйте задачу 'db: seed'; взгляните на [этот вопрос и ответ] (http://stackoverflow.com/questions/761123/what-is-the-best-way-to-seed-a-database-in-rails). – nickgrim

+0

Спасибо @nickgrim ... Я проведу данные «seed-data» на железнодорожной передаче – thomasvermaak

ответ

3

Здесь есть пара вещей.

При запуске $ rake sample_employee_data.rake вы спрашиваете грабли грабли файл - но рейк отвечает задачам:

$ rake some_namespace:some_task_in_that_namespace

Вы также с помощью пользовательской .rake file вместо обычного Rakefile - это хорошо , но это означает, что вам нужно четко указать rake, что вы не используете его по умолчанию Rakefile.

$ rake --rakefile your_custom_rake_file.rake some_task

Так что в вашем случае, вам нужно выдать команду рек так:

$ rake --rakefile sample_employee_data.rake db:populate

+0

Спасибо @ Рик Уинфри за ваш ответ ... человек, который действительно всеобъемлющий, и я очень ценю время и думал, что вы положили в свой ответ. Я выполнил команду, как вы ее предлагали, и я все равно получаю грабли! флаг. Не найден Rakefile (ищет: sample_employee_data.rake) ... должен ли я дать ему путь к файлу rakefile? ... еще раз спасибо. – thomasvermaak

+1

Вы используете команду rake в том же каталоге, что и файл рейка? Если вы находитесь в том же каталоге, вы можете просто вопрос: '$ рейка --rakefile sample_employee_data.rake дб: populate' Но если нет, то вам необходимо указать путь к файлу: ' $ rake -rakefile путь/to/sample_employee_data.rake db: populate' Сообщите мне, как это получается. –

+0

Хорошо ... Я поменял свой каталог на lib/tasks/и запустил файл, как вы предложили, и теперь флаг «Не знаю, как создать задачу». «... в файле у меня есть» задача populate:: environment do "... у него проблемы со средой. – thomasvermaak

Смежные вопросы