Skip to content
This repository has been archived by the owner on Jun 27, 2019. It is now read-only.

2396 - 3 #279

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

2396 - 3 #279

wants to merge 1 commit into from

Conversation

ilya-github
Copy link

Номер

2396

Номер задания

3

Ссылка на видео с демо

https://youtu.be/aHM58_v8gng

Комментарии

Готово

@nplusp
Copy link
Member

nplusp commented Jul 30, 2018

https://youtu.be/aHM58_v8gng?t=1m24s
@ilya-github тебя не смущает, что этих комментариев не существуют для статьи с онлайнера?

Откуда там про Марс вообще :)))

@nplusp
Copy link
Member

nplusp commented Jul 30, 2018

Опять-таки, не делай всю работу в одном коммите — лучше раздробить на много мелких, так проще откатывать и изменять код.

post.delete if post.link == params[:link]
end
PostWorker.perform_async(params[:link])
sleep 2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не, фигня :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я так понимаю, ты ждешь что твой парсер обработает страницу?

А что, если за 2 секунды PostWorker не отработает?
Если ты прям хочешь ждать до конца, то ты можешь вызывать PostWorker.perform(params[:link]).

Но вообще так тоже делать не круто (а делать через pub/sub), но наверное пока сойдет и так.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Изначально хотел добавить flash как в рельсах, что ссылка отправлена на анализ, но не успевал и сделал такой костыль.

<header>
<%= erb :navbar %>
</header>
<div class="container">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Соблюдай отступы.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

окей, накладочка.

@@ -0,0 +1,15 @@
<%= erb :header %>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

header и head это разные вещи

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

принял

</div>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JS и CSS скрипты мы обычно складываем в head.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

шаблон из документации


post '/create' do
Post.all.each do |post|
post.delete if post.link == params[:link]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можешь рассказать зачем ты это делаешь?
Потому что на первый взгляд это кажется совсем не верным решением.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Удаляю пост, если он уже был ранее создан. Обновить его данные было бы логичнее...

end

get '/:id' do
@posts = Post.all
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь то же самое.

# This is class handling comments for post across API onliner.by
class CommentsParser
LIMIT = 50
API_PATH = 'https://comments.api.onliner.by/news/tech.post/'.freeze
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я так понимаю из url, ты только технические статьи можешь парсить?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хз отчего, но я бы мб вынес эти констаны в Setting.onliner_api и сделал хешом. Подумай об этом. Делать необязательно, но мб тебе понравится.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласен. Добавило бы больше гибкости

# This is class conects to API AZURE, Analyze sentiment texts and
# fetch score for his
class RatingCounter
KEY_AZURE = Setting.get('key_azure').freeze
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот это тоже бы почему-то вынес в Setting'и.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Или даже может сделал AzureSetting < Setting и так инкапсулировал конфиг Azure. То же самое с онлайнером.

class PostWorker
include Sidekiq::Worker
def perform(link)
call(link)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А в чем смысл метода call?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reek ругался, что лучше вынести в отдельный класс.

end

def self.fetch_title(url)
agent = Mechanize.new
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне не нравится то, что класс называется CommentsParser, а ты делаешь две разные вещи (фетчишь комменты и фетчишь тайтл).

По ООП тут правильно было бы вынести этот метод в отдельный класс. Либо (чтобы соптимизировать на запросе) фетчить заголовок вместе с комментами и возвращать хешом — {title: '...', comments: [...]}

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Второй вариант рассматривал, но посчитал, что лучше вынести в отдельный метод.
Вынесу в отдельный класс.

Copy link
Author

@ilya-github ilya-github left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправлю замечания в ближайшие дни.

end

def self.fetch_title(url)
agent = Mechanize.new
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Второй вариант рассматривал, но посчитал, что лучше вынести в отдельный метод.
Вынесу в отдельный класс.

class PostWorker
include Sidekiq::Worker
def perform(link)
call(link)
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reek ругался, что лучше вынести в отдельный класс.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants