Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Railsのページネーション機能のKaminariのソースコードリーディング

Railsにページネーション機能を追加するKaminariのソースコードを読んでみてまとめました。 本体のコード量は、700行程度ですので、比較的読みやすいと思います。  

モデルはActiveRecord::Baseのメソッドの名前空間を汚さずに、ページネーションのメソッドを追加する方法がライブラリ開発では参考になると思いました。
また、ビューあたりはRailsらしい黒魔術があり処理の流れや処理を理解するのが難しいですが、表示ロジックとHTML表示を分けてる実装は面白かったです。

  • 1. 目的
  • 2. 基本情報
    • 対象バージョン
    • コード量
    • ディレクトリ構成
    • ドキュメント
    • 基本的な使い方
  • 3. ActiveRecordのpageメソッドとperメソッドの実装方法
  • 4. ビューのpaginateヘルパーメソッドの実装方法
  • 5. Configuの実装方法
  • まとめ
続きを読む

Railsの権限管理CanCanCanのソースコードリーディング

Railsの権限管理のCanCanCanのソースコードを読んでみてまとめました。 本体のコード量的は1,000行程度で、同じ権限管理をするPundit(300行程度)と比べると多めです。

  • 1. 目的
  • 2. 基本情報
    • 対象バージョン
    • コード量
    • ディレクトリ構成
    • クラス図
    • ドキュメント
    • 基本的な使い方
  • 3. CanCanCanの権限管理を実装する方法
  • 4. CanCanCanの権限管理をRailsに東吾する方法
  • 5. その他気になったことメモ
  • まとめ
続きを読む

Railsの権限管理Punditのソースコードリーディング

Railsの権限管理のPunditのソースコードを読んでみてまとめました。 本体のコード量的には300行程度なので比較的簡単に読めるかと思います。

  • 1. 目的
  • 2. 基本情報
    • 対象バージョン
    • コード量
    • ディレクトリ構成
    • クラス図
    • ドキュメント
  • 3. Punditの権限管理の実装する方法
  • 4. 権限管理機能をRailsと統合する方法
  • 5. RailsのGeneratorの作り方
    • 5.1. pundit:install
    • 5.2. pundit:policy [model]
  • まとめ
続きを読む

Rails5.2から入ったActiveStorageのソースコードを読んでみた

f:id:nipe880324:20180818220123p:plain:w420

Active Storageの実装にいくつか興味があるところがあったので、いくつかピックアップしてソースコードリーディングをしてみました。
ライブラリということもあり、ビジネスロジックのややこいところもないため、シンプルで読みやすいコードでしたのでぜひ興味があるかたは読んでみてください。

ソースコードはRails 5.2.1時点のものです。
読む際は、Active Storageの概要 | Rails ガイドを軽く読んでおいて挙動を軽く確認しておくと読みやすいと思います。

続きを読む

ActiveStorageでS3にダイレクトアップロードする

f:id:nipe880324:20180818220123p:plain:w420

Rails 5.2から入ったファイルアップロード機能のActive Storageを使ってS3にダイレクトアップロードを実装します。 クライアントからS3にファイルを直接アップロードすることにより、ファイルアップロード時の負荷を削減できるメリットがあり、最近ファイルをAWSにアップロードするとなるとダイレクトアップロードで実装することが多いと思います。 ファイルをアップロードするにあたり、S3の設定やユーザ認証、ファイルのバリデーションなど実運用で必要と思われる箇所についても合わせて実装していきます。

続きを読む

リーンスタートアップまとめてみました

f:id:nipe880324:20180819002335p:plain:h420

起業や新規事業開発において有効な方法論のリーンスタートアップについてまとめてみました。
企業の状況(製品、市場、顧客、タイミング、メンバー、法律など様々なこと)により、実際は理論通りにはいかないと思いますが、起業や事業開発の基礎的な流れとして頭にいれとくのは携わった時に大いに参考になると思いまとめました。

続きを読む

serverless frameworkでAWSにサーバレスなAPIサーバーを作る

f:id:nipe880324:20180701190810j:plain:w420

フルマネージドなAPIサーバーを簡易にたてるときの選択肢の一つとして、API Gateway, Lambda (Flask), DynamoDBを使ってAPIサーバーを作成しました。
各サービスの構築には、serverless frameworkを使いました。

ソースコードはこちらにあります。
https://github.com/nipe0324/serverless-flask-sample

続きを読む