- fastladderをsystemdで上げ下げできるようにしたり、クローラーバグを直したり、おひとりシステム化したりした記録
- クローラーバグ修正関連は https://github.com/Akkiesoft/fastladder/commits/crawler にコミットした。英語ができなさすぎてプルリクがためらわれるしGoogle翻訳を使った。
- 最初から作る時
create database fastladder charset=utf8mb4;
- 後から変更する時
ALTER TABLE crawl_statuses CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE favicons CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE feeds,folders CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE feeds CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE folders CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE items CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE members CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE pins CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE schema_migrations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
ALTER TABLE subscriptions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
グッスマのフィード対応
alter table items modify link text;
https://github.com/Akkiesoft/fastladder/commit/360cd8ed79ce33158f9bc642a0dec38b13bb43e5
fastladder/lib/fastladder/crawler.rb
Engadget Japaneseのフィード対応
- category: item.categories.first,
+ category: (defined? item.categories) ? item.categories.first : "",
https://github.com/Akkiesoft/fastladder/commit/949fe291b4f4720ec6e046d19351745546e3e279
cut_off()の引数にfeedがないので、メソッドのログ出力時にエラーになるのでfeedを足す ログ出力をコメントアウトしても良いけど。
- def cut_off(items)
+ def cut_off(feed, items)
def update(feed, source)
(略)
- items = cut_off(items)
+ items = cut_off(feed, items)
https://github.com/Akkiesoft/fastladder/commit/cf898cc7dbcdc5b33348f149a9f2bb3feac782a1
たとえばこんなふうに間違えてタグが挿入されていた場合とか
def fixup_relative_links(feed, body)
(略)
links.each do |link|
- link['href'] = Addressable::URI.join(feed.feedlink, link['href']).normalize.to_s
+ begin
+ link['href'] = Addressable::URI.join(feed.feedlink, link['href']).normalize.to_s
+ rescue
+ @logger.info "Invalid link [#{feed.feedlink}] [#{link['href']}]"
+ end
end
https://github.com/Akkiesoft/fastladder/commit/ded7e19b455086c026e8967e358b01c18f2c3937
- feedパラメータがない。これはcut_offと同様に足せば良い
- Items.where(feed_id: feed.id).delete_all がtypoしている。Itemがただしい。
https://github.com/Akkiesoft/fastladder/commit/b9f46c724fbab5ff905d7ddc271c7dbf7f901faf
- User/Groupは適当に
- /etc/systemd/system/fastladder-crawler.service
[Unit]
Description=Fastladder crawler
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/bin/ruby2.3 script/crawler -e production -l /var/log/fastladder/crawler.log
WorkingDirectory=/var/www/fastladder
KillMode=process
Restart=always
User=***
Group=***
[Install]
WantedBy=multi-user.target
これを追加しておかないとrestartできない。
https://github.com/Akkiesoft/fastladder/commit/534faf61b20957b7ac8fd71725147f9d81b8a89e
- 一人で使う時に新規登録されるとまずいので、自分がサインアップしたあとはサインアップ周りをコメントアウトしておく。
- https://github.com/Akkiesoft/fastladder/tree/private
- User/Groupは適当に
- /etc/systemd/system/fastladder-web.service
[Unit]
Description=Fastladder web frontend
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/rails server -b 127.0.0.1 -e production
WorkingDirectory=/var/www/fastladder
KillMode=process
Restart=always
User=***
Group=***
[Install]
WantedBy=multi-user.target