投稿

8月, 2018の投稿を表示しています

Active StorageはまだPublic URL(ファイル)に対応していない

イメージ
ねこすたで新規に画像を登録する必要が出てきたので、今まではpaperclipを利用していましたが、5.2からActiveStorageが正式に出たのでそっちを利用しようかなと思いました。
そのために5.1から5.2にアップグレード実施(とくに問題なく完了)。

ねこすたの画像はS3にファイルを置いて、CloudFrontで表示するようにしています。
が、しかしActive StorageはまだPublic URL(ファイル)に対応していない!
https://github.com/rails/rails/issues/31419
https://stackoverflow.com/questions/50676891/rails-activestorage-link-to-cloudfront

作者が言ってます

対応は未定。

困ったということで、まだActive Storageに移行は早かった。paperclipもDeprecatedになってるので、ほかのライブラリも検討中。

普通のWEBサイトならいいけど、API向けにはまだ利用は早いかもしれない(用途によるけど)

APNs証明書を簡単に更新する方法

はじめに 1年に一回必ずやってくるAPNs証明書の更新。
非常に面倒でたまにしかやらないので、いつも忘れるのですが、これをコマンド一発でやってくれる便利なツールを紹介します。

Fastlanehttps://docs.fastlane.tools/actions/pem/

iOS、Androidアプリで簡単にdeployments、releasesファイルを作成してくれるやつです。
これにAPNs証明書の更新をコマンド一発でやってくれるツールが入っています。

まずは、fastlaneをインストール
https://docs.fastlane.tools/
$ gem install fastlane
iOSプロジェクトのカレントディレクトリに移動して以下を実行
$ fastlane init Gemfileとlockファイルが作成されます。

Fastfileを作成するとAppStoreへのアップ、TestFlightへのアップなどコマンドでできるようになりますが、その話はまた今度。

APNs証明書の更新 以下コマンドを実行
$ fastlane pem [✔] 🚀 [18:53:21]: fastlane detected a Gemfile in the current directory [18:53:21]: however it seems like you don't use `bundle exec` [18:53:21]: to launch fastlane faster, please use [18:53:21]: [18:53:21]: $ bundle exec fastlane pem [18:53:21]: [18:53:21]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile +-------------------+------------------------+ | Summary for PEM 2.101.1 | +-------------------+------------------------…

YPImagePickerで加工動画が変換できない

ねこすたの画像投稿ではインスタ風UIを採用しています。
そこで利用しているのが、YPImagePickerというライブラリ。

かなり便利で重宝しているのですが、ある日こんな問い合わせが。
"LINEカメラで作成した動画があげることができない。"

ためしてみると、確かにライブラリ画面から選択して次へ進めなくなってしまいます。
デバッグログを確認すると、以下エラーが出てました。
PHCachingImageManager >>> Problems with audio track

githubにも同様のissueが上がっていました。
https://github.com/Yummypets/YPImagePicker/issues/199

そのissueも反応ないようなので、修正してPRでもしようとおもいcloneして動作確認。
あれ、普通に動く。
該当の箇所の差分を見ると修正されているようでした。https://github.com/Yummypets/YPImagePicker/commit/a6e847cfb822706c49fecf3c831814446b4e0fa2

v3.4.0で発生していて、上記修正バージョンはタグがまだ振られていない状態。
masterを参照するようにすれば治りました。

いちおうコメントもしておきました。
https://github.com/Yummypets/YPImagePicker/issues/199#issuecomment-413077398

bitnami@wordpressでVirtualHostを設定する方法

bitnami@wordpressとは? EC2でwordpressを簡単に構築できるパッケージになります。
AWS MarketplaceでAMIとして提供されています。
AWSのチュートリアルとしても利用されています。

本家で紹介されている設定 通常の設定であれば、EC2を立ち上げて何もしないで完了です。
VirtualHostを利用する場合はconfigを変更する必要があります。

本家サイトに設定方法が書かれています。

このファイルに記載されている
/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf Include "/opt/bitnami/apps/myapp/conf/httpd-prefix.conf" を消して
Include "/opt/bitnami/apps/myapp/conf/httpd-vhosts.conf" を追加

apacheをrestartして完了。
と思いきや、以下のエラーが出ます。
<VirtualHost> cannot occur within <VirtualHost> section apache config test fails, aborting
原因 /opt/bitnami/apache2/conf/bitnami/bitnami.conf
8 <VirtualHost _default_:80> 9 DocumentRoot "/opt/bitnami/apache2/htdocs" 10 <Directory "/opt/bitnami/apache2/htdocs"> 11 Options Indexes FollowSymLinks ... 25 # Bitnami applications installed with a prefix URL (default) 26 Include "/opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf" bitnami-apps-prefix…

メッセージUIライブラリMessageKitの紹介

はじめに ねこすたでは投稿された画像、動画にコメントをすることができます。
そのコメント欄はLINE風のUIにしているのですが、そこで採用したライブラリがJSQMessagesViewControllerでした。
しかし、そのライブラリが去年(2017/07)にDeprecatedになってしまいました。作成者理由
しばらくはJSQMessagesViewControllerを利用していましたが、pod install,updateするたびにDeprecatedが表示される始末。。最近になってコメントのところをいろいろ改修する必要が出てきたのでいい機会なのでライブラリを変更することにしました。
JSQMessagesViewControllerのissueでちょうどよさそうなライブラリを発見。評価も良さそう
Exampleを動かして良さそうなので採用することにしました。

使い方 インストールはREADME参照
そして、、使い方がどこにも書いてない!!
Exampleがあるのでそれを見ながら実装することに。

まずはMessagesViewControllerを継承したControllerを作成。
class ConversationViewController: MessagesViewController { var messageList: [MockMessage] = [] // 各メッセージ内容を格納したList

継承したクラスにmessagesCollectionViewという変数があるのでこいつが、UIのcollectionViewになります。
各delegateを設定
override func viewDidLoad() { super.viewDidLoad() ... messagesCollectionView.messagesDataSource = self messagesCollectionView.messagesLayoutDelegate = self messagesCollectionView.messagesDisplayDelegate = self messagesCollectionView.messageCellDelegate = self
inputBarのde…

FunBizのシステム環境

FunBizとは クラウド販売管理システムになります。
販売管理とは見積り、受注、発送、入金、仕入れなどの流れを管理します。
既存製品だとパッケージ製品が多いのですが、FunBizはインストール不要でブラウザでアクセスして即利用することができます。

サーバーサイド Ruby 2.4.3
Ruby on Rails 5.1.6

フロントエンド Reactを利用しています。
webpackerを利用してJSライブラリを管理(名残でSprocketsも併用中)

全部がReactになっているわけではなく(SPAではない)、動的な箇所がおおいところをReactで対応(react-rails)。
その他はerbで(turbolinksと併用)

ジョブ(非同期処理) メール送信、エラー通知(Slack)、ファイルアップロードなど時間のかかる処理はジョブで処理をしています。
ジョブはsidekiqを利用

ミドルウェア Nginx 1.12.1
Puma 3.11.4
Redis 3.2.11
memcached 1.5.4

DB MySQL 5.6

サーバー環境
ステージング Herokuを利用
Puma、Sidekiqのプロセスをhobby dynosで立ち上げ
Heroku Redisを利用
DBはAWS RDSに接続

本番 AWSを利用
・EC2(負荷状況によりautoscaling)
・RDS(MySQL)
・ElastiCache(Redis)
・S3(画像保存など)
・ALB
・CloudFront
・SES

デプロイ ステージングはHerokuに自動deploy(developが更新されると)
本番はAWS Elastic Beanstalkを利用(masterが更新されるとdeploy)

CI環境SideCIを利用して自動コードCheck
テストコードが充実してきたら、テストを流すCIも入れたい(利用顧客も増えてきて影響範囲が大きくなってきたので、テストコードを誠意作成中)

おわりに 前回はねこすたの環境をお伝えしましたが、今回はFunBizの環境を簡単にお伝えしました。
初回無料トライアルもありますので、ぜひご利用ください!
https://www.funseek.biz/

※各記載あるバージョン番号は18/08/02 時点のものとなります。