
ojab
13.07.2016
14:36:41
там уж так разжёвано)
но там же в самом начале ошибки
>Следует понимать, что при этом блок является особой конструкцией языка и обособлен от списка явных аргументов метода

Иван
13.07.2016
14:36:46
но ведь блок можно передать методу

ojab
13.07.2016
14:36:47
в gist'e он не обособлен

Mikhail
13.07.2016
14:36:50
ну это я вкурсе

Google

Иван
13.07.2016
14:37:00
он становиться обжектом только внутри метода

Mikhail
13.07.2016
14:37:02
ну я блок и не рассматривал как сущность. Это конструкция

Иван
13.07.2016
14:37:02
вроде

trickster
13.07.2016
14:37:04
while keyword?

Mikhail
13.07.2016
14:37:07
да

trickster
13.07.2016
14:37:12
keyword вроде как тоже не обджект

Mikhail
13.07.2016
14:37:33
он внутри прока обдж становится
а статья классная. Вроде не родная. На хабре видел
или где то в другом техноблоге)
Короче это не о чем стоит думать.
но то что блоки везде и всюду это да

Иван
13.07.2016
14:40:15
методы это объекты?

Mikhail
13.07.2016
14:40:46
метод это метод

Google

ojab
13.07.2016
14:40:56
>Основное и принципиальное отличие блока от метода в том, что первый имеет доступ к переменным, объявленным до него во внешнем окружении.
whaaaaa
https://gist.github.com/ojab/6f7539deed563cacaa51e673077f679a
где мои переменные

Mikhail
13.07.2016
14:41:56
лол

ojab
13.07.2016
14:42:04
а, первый

Mikhail
13.07.2016
14:42:08
это че за ужс

ojab
13.07.2016
14:42:09
ок

Mikhail
13.07.2016
14:42:23
пошел толстый троллинг

trickster
13.07.2016
14:42:34
к чему гист -то )

Mikhail
13.07.2016
14:42:34
где тут стикер петросяна
нету(

ojab
13.07.2016
14:42:46
это я криво прочитал
гист можно игнорировать

Mikhail
13.07.2016
14:43:00
почему
гистгист

Иван
13.07.2016
14:43:33
но метод тоже можно преобразовать в объект

ojab
13.07.2016
14:44:33
короче я нихера не понял что статья пытается сказать в разделе
»Почему блок нельзя считать анонимным методом?
>Внешние переменные
>:001 > for i in [1, 2, 3] do
>:002 > print i
>:003?> end
>123 => [1, 2, 3]
oh wow

Google

ojab
13.07.2016
14:46:17
such python


Mikhail
13.07.2016
14:46:42
короче смотри грязный тестик
TRAILBLAIZER DRY-VALIDATION
Started POST "/vacancies" for ::1 at 2016-07-12 04:43:49 +0600
Processing by Web::VacanciesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7smXf9B94tfvPZLofWAEmoo24LwCkFuMUDbgu3laGWV5fZyxXmaSVz5m9s9ZBvMVuD/+0lmL8gaBMPxuQdspYg==", "vacancy"=>{"title"=>"", "description"=>""}, "commit"=>"Создать Vacancy"}
Rendering web/vacancies/new.html.haml within layouts/application
Rendered web/vacancies/new.html.haml within layouts/application (8.7ms)
Rendered application/_navbar.html.haml (8.8ms)
Completed 200 OK in 50ms (Views: 46.6ms | ActiveRecord: 0.0ms)
CLASSIC RAILS + STRONG + ACTIVEMODEL (valid?)
Started POST "/vacancies" for ::1 at 2016-07-12 05:06:15 +0600
Processing by Web::VacanciesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wEVVSG/41rM1SAH1B8/zNcYvD8JmNbUvLC88O99CrLJX8V6G4eOmM+QTZdIjqQS69CYRrD0uHKX9KSDu58OctQ==", "vacancy"=>{"title"=>"", "description"=>""}, "commit"=>"Создать Vacancy"}
Rendering web/vacancies/new.html.haml within layouts/application
Rendered web/vacancies/new.html.haml within layouts/application (10.4ms)
Rendered application/_navbar.html.haml (16.1ms)
Completed 200 OK in 69ms (Views: 66.6ms | ActiveRecord: 0.0ms)
2 поля в форме
просто проверка на валидацию. С чистым кэшем и перезагрузкой сервера.
вот дольше отрабатывает даже на малом запросе


ojab
13.07.2016
14:48:53
код тестика в студию (на гитхуб)

Mikhail
13.07.2016
14:49:03
охххх
ща попробую собрать

I
13.07.2016
14:49:13
о чем демагогия, господа?

Mikhail
13.07.2016
14:49:51
ты хочешь чтобы я перетащил сюда дефолт с трайлблейзер доков
?


Mikhail
13.07.2016
14:50:05
ща проще
[v
почему не аплоадит
во
------ Класс блейзер
class Vacancy < ApplicationRecord
class Create < Trailblazer::Operation
include Model
model Vacancy, :create
contract do
property :title
property :description
validates :title, presence: true
validates :description, presence: true
end
def process(params)
validate(params[:vacancy]) do
contract.save
end
end
end
end
class Web::VacanciesController < ::Web::BaseController
# GET /vacancies/new
def new
form Vacancy::Create
end
# POST /vacancies
def create
run Vacancy::Create do |op|
return render json: op.model
end
render action: :new
end
end
Это на блейзер
вот классический рельс
class Web::VacanciesController < ::Web::BaseController
# GET /vacancies/new
def new
@form = Vacancy.new
end
# POST /vacancies
def create
@form = Vacancy.new(vacancy_params)
if @form.valid? && @form.save
render json: @form
else
render :new
end
end
private
def vacancy_params
params.require(:vacancy).permit(:title, :description)
end
end

Google

Mikhail
13.07.2016
14:54:08
под стронги добавил as: :vacancy
оу
в первом не драй код)

Admin
ERROR: S client not available

Mikhail
13.07.2016
14:54:28
ща в гист
ojab https://gist.github.com/CapeRatel/63a6f0999e2e1d238c572a151c70b6ce
падет так?

ojab
13.07.2016
14:57:33
смотрю

Mikhail
13.07.2016
14:58:52
как то так
я читал что стронги дают косяк
задерживают
но тут попробовал както удивился что на таком простом

Иван
13.07.2016
14:59:43
а о чем разговор, я чего то нить потерял

Mikhail
13.07.2016
15:00:07
разговор что стронг парамы на простом запросе дают задержку
при классическом тыкании рельс без форм обджекта

ojab
13.07.2016
15:00:53
if @form.valid? && @form.save

Mikhail
13.07.2016
15:01:00
да
потому что если ты будешь юзать @form.save

ojab
13.07.2016
15:01:13
@form.save is enough

Mikhail
13.07.2016
15:01:14
он активрекод дернет

Google

Mikhail
13.07.2016
15:01:18
ща покажу
CLASSIC RAILS, STRONG PARAMS + ACTIVE MODEL
Started POST "/vacancies" for ::1 at 2016-07-12 04:57:00 +0600
Processing by Web::VacanciesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"cpBxbDl3RfK8fi+Lfpup/A+DHSCCrm25ZzZ9zmtEoh3lJHqit2w1cm0lS6xa/V5zPYoDTtm1xDO2MGEbU8WSGg==", "vacancy"=>{"title"=>"", "description"=>""}, "commit"=>"Создать Vacancy"}
(0.1ms) BEGIN
(0.2ms) ROLLBACK
Rendering web/vacancies/new.html.haml within layouts/application
Rendered web/vacancies/new.html.haml within layouts/application (12.1ms)
Rendered application/_navbar.html.haml (6.8ms)
Completed 200 OK in 80ms (Views: 76.0ms | ActiveRecord: 0.3ms)
вон видишь 0.3
а если valid ставить то не будет
=)
это я для чистоты валид добавил
потому что блейзер валидирует сначало потом пробует сохранить
но разница между dry и активмодел в блейзере не ощутимая
где то 5-6мс
поэтому по привычке можно юзать active model
ну это не на че не претендует естественно


trickster
13.07.2016
15:05:46
гаез
где можно почитать за form object && service object

Иван
13.07.2016
15:06:21
вот про сервисы яб тоже посмотрел