Jak uruchomić Rails console w środowisku testowym i załadować test helper.rb?

Tło: mam problemy z klejnotem "Factory Girl" Thoughtbota, który służy do tworzenia obiektów do wykorzystania w testach jednostkowych i innych. Chciałbym przejść do konsoli i uruchomić różne telefony Factory Girl, aby sprawdzić, co się dzieje. Na przykład, chciałbym tam wejść...

>> Factory(:user).inspect

Wiem, że można uruchomić konsolę w różnych środowiskach...

$ script/console RAILS_ENV=test

Ale kiedy to robię, Klasa Fabryczna nie jest dostępna. Wygląda jak chociaż {[2] } nie jest ładowany.

Próbowałem różnych połączeń require, w tym jednego z absolutną ścieżką do test_helper.rb, ale zawiodły podobnie do tego:

$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
  Errno::ENOENT: No such file or directory - 
  /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb

Grr. Argh.

Author: Ethan, 2009-06-26

8 answers

Do Szyn

Run script/console --help. Zauważysz, że składnia to script/console [environment], czyli w Twoim przypadku script/console test.

Nie jestem pewien, czy potrzebujesz pomocy testowej, czy środowisko testowe robi to za ciebie, ale za pomocą tej komendy powinieneś przynajmniej być w stanie pomyślnie uruchomić test env.

Jako notatka poboczna: to rzeczywiście dziwne, że różne binaria w script / mają różne sposoby ustawiania środowiska rails.

Dla Rails 3 i 4

Run rails c test. Prepend bundle exec jeśli potrzebujesz tego dla bieżącego środowiska aplikacji.

 170
Author: August Lilleaas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 17:41:46

W Rails 3, po prostu wykonaj rails console test LUB rails console production lub rails console development (co jest domyślne).

 60
Author: sivabudh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-08 20:57:28
script/console test
Powinno być wszystko, czego potrzebujesz.
 10
Author: David Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 18:24:06

David Smith ma rację, po prostu zrób

script/console test

Polecenie help pokaże, dlaczego to działa:

$ script/console -h
Usage: console [environment] [options]
    -s, --sandbox                    Rollback database modifications on exit.
        --irb=[irb]                  Invoke a different irb.
        --debugger                   Enable ruby-debugging for the console.

To [środowisko] bit.

 3
Author: Purplejacket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-09 19:44:26

Możesz określić środowisko, w którym powinna działać Komenda konsoli.

rails c [environment]

Przykłady

1) Do Inscenizacji

rails c staging

2) Do Produkcji

rails c production

Dla źródła i szczegółowego opisu: Linia poleceń Rails

 3
Author: Aamir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 07:45:38

Upewnij się, że zainstalowałeś GEM i dodałeś następującą linię w swoim środowisku.rb lub test.plik rb.

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
 1
Author: Simone Carletti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-26 16:54:23

Podzielam ból askera. Istnieją naprawdę trzy oddzielne pytania tutaj, Niektóre z nich są rozwiązywane, niektóre nie:

  1. Jak uruchomić konsolę w środowisku testowym?

    Dla najnowszych wersji Rails, bundle exec rails c test, lub dla tego alternatywne składnie.

  2. Jak upewnić się, że test / test_helper.rb jest załadowany do tej sesji konsoli?

    Coś w rodzaju require './test/test_helper' powinno to zrobić.

    Dla mnie to zwraca true, wskazując, że nie było już załadowany, gdy uruchomiłem konsolę. Jeśli to stwierdzenie zwróci false, to zmarnowałeś kilka naciśnięć klawiszy, ale nadal jesteś gotowy.

  3. Po załadowaniu test_helper, jak wywołać zdefiniowane w nim metody?

    W typowym test_helper, metody niestandardowe są zazwyczaj definiowane jako metody instancji Activesupport:: TestCase. Więc jeśli chcesz zadzwonić do jednego z nich, potrzebujesz instancji tej klasy. Metodą prób i błędów, ActiveSupport:: TestCase.Nowy ma jeden wymagany parametr, tak...podaj coś.

    Jeśli twój test_helper ma metodę o nazwie create_user, możesz ją wywołać w ten sposób: ActiveSupport::TestCase.new("no idea what this is for").create_user

 1
Author: Nick Davies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-19 19:15:45

Test Env

rails console test # or just rails c test

Developement Env

rails console # or just rails c
 0
Author: anyavacy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-14 07:30:00