ブックマーク / morizyun.github.io (16)

  • 酒と涙とRubyとRailsと

    title: “ [Gem] Webmock RSpecのWebアクセスのモックを作成してくれる超便利Gem [Rails]” category: Rails 😼 tags: [Rails, Ruby, Gem]WebからデータをダウンロードするプログラムのRSpecで、Webにいちいちアクセスしたくない場合に重宝するのが、「Webmock」です。これを使えばある時点のデータを使えるので、テスト結果が更新されて変わるような事態を防ぐことができます! bblimke/Webmock · GitHub

    酒と涙とRubyとRailsと
    kent-where-the-light-is
    kent-where-the-light-is 2016/12/30
    “stub_request(:get, EXAMPLE_SITE_URL).to_return({:body => EXAMPLE_SITE_BODY,:status => 200})”
  • Active Jobの簡単な導入手順とRSpecの書き方について

    Active Jobの導入手順と、Active Job周りのRSpecの書き方をちゃんと理解していなかったので、英語の勉強も兼ねて、 『Active Job Basics — Ruby on Rails Guides』 を読んでみました! 🚌 Active JobとはActive Jobはジョブを宣言し、バックエンドでキュー操作を抽象化して実行するためのフレームワーク。 🗻 ジョブの作成ジョブの作成コマンドはこちら。 $ bin/rails generate job guests_cleanup invoke test_unit create test/jobs/guests_cleanup_job_test.rb create app/jobs/guests_cleanup_job.rb class GuestsCleanupJob < ActiveJob::Base queue_a

    Active Jobの簡単な導入手順とRSpecの書き方について
    kent-where-the-light-is
    kent-where-the-light-is 2016/12/26
    “ActionMailerの #deliver_later は内部でActiveJobを使っている。 1 2 3 4 5 # すぐに送付する場合は、 #deliver_now UserMailer.welcome(@user).deliver_now # ActiveJobを使って後ほど送る場合は、 #deliver_later UserMailer.welcome(@user).deliver_later”
  • Redis-rails RailsのセッションをRedisで管理

    サーバサイドでのセッション管理はセキュリティを向上させたり、通信で無用なCookieを送らない等の意味でメリットがあります。 今回は『redis-store/redis-rails - GitHub』を使う手順のメモです! 🍣 サーバサイド/クライアントでのセッション管理のPros/Consセッションに関する説明は次のサイトがお勧めです。注意点としては次の2点と考えられます。 セッション管理の要注意点 - Qiita Rails セキュリティガイド | Rails ガイド - セッションの基礎 - Webアプリでは、接続ごとに固有の識別子(セッションID)を割り当て、一時的なidを割り振る - セッションは他のCookieと合わせて通信のたびにやり取りされる - Cookieのサイズは4 KBと厳密に定められている - セッションにおけるセキュリティのリスク - 他人のセッションを取得す

    Redis-rails RailsのセッションをRedisで管理
    kent-where-the-light-is
    kent-where-the-light-is 2016/12/14
    “サーバーサイドでのセッション管理はセキュリティを向上させたり、通信で無用なCookieを送らない等の意味でメリットがあります。 今回は『redis-store/redis-rails - GitHub』を使う手順のメモです!”
  • Elasticsearchを使ったRailsサンプルアプリの作成 - 酒と泪とRubyとRailsと

    検索機能を実装するときによく使われているElasticsearchをRailsで使うためのサンプルアプリケーションの作成の手順を作りました。入門レベルです! 🐮 Elasticsearchの導入拙著『Elasticsearch 2.1 + Kibana 4.1 + Marvel のMacへのセットアップ』を良ければご参考ください。 🍄 RailsサンプルアプリケーションRailsのサンプルアプリケーションを作成します。今回は Article(記事) のモデルをもつことにします。 # Railsアプリの作成 rails new elasticsearch_sample --skip-bundle # フォルダを移動 cd elasticsearch_sample # DBの作成 rake db:create # article テーブルの定義を作成 bundle exec rails g

    Elasticsearchを使ったRailsサンプルアプリの作成 - 酒と泪とRubyとRailsと
  • Railsで複雑な検索条件を簡単に実装できるGem Ransack - 酒と泪とRubyとRailsと

    Railsで検索機能を提供する場合に、複雑な条件の組み合わせを実装する時に便利なGem、『Ransack』を紹介たいと思います!

    kent-where-the-light-is
    kent-where-the-light-is 2016/12/12
    “Prefixをつければ関連テーブルも含めて検索出来ます。 1 2 @products = Product.search(maker_name_cont: "hoge").result #=> SELECT `products`.* FROM `products` LEFT OUTER JOIN `maker` ON `maker`.`id` = `products`.`maker_id` WHERE (`maker`.`name` LIKE '%hog”
  • Railsのマスタ的なModelのキャッシュについて[Redis]

    Railsで中規模なサイトを作っていく上で 避けて通れないのが、増えてきたモデルを適切にキャッシュするしくみのように思えます。 特に変更が少ないマスタ的なテーブルに対して、『多対多』で関連付け(アソシエーション: association)がある場合などは、 それなりのSQLの発行コストになることがあります。そこを適切にキャッシュすることでDBへの負荷が減り、 ユーザーへのレスポンスが改善されると思います。 今回は、最近実装しているキャッシュの方法について、紹介したいと思います。 (というか偉い人、ぜひいい方法教えてください><) 🍣 前提条件: RailsからRedisにキャッシュ今回は前提条件として、Railsのアプリケーションから『redis-store/redis-rails - GitHub』 のGemを使って、Redisにキャッシュをされているとします。 セットアップ方法は『r

    Railsのマスタ的なModelのキャッシュについて[Redis]
    kent-where-the-light-is
    kent-where-the-light-is 2016/11/25
    “ActiveRecord、まじ洗練されててすごい。でもその分、レコード数、カラム数が多くなるとオブジェクトの生成コストつらい気がする パフォーマンス保つためにも できるだけ SQL は発行したくないよね 仮に N+1 をさけて、inclu
  • RDBMSとNoSQLのメリット・デメリットについて

    RDBMSとNoSQLの特徴、メリット・デメリットについて調べたのでそのメモです。今まで言葉の表面的な部分ばかりを見てきていたことを反省中。自分の頭の中にあるキーワードをしっかりと構造化していくように、基礎固めを頑張ります! 🎳 RDBMS概要 1件のデータを複数のフィールドの集合として表現する。データの集合をテーブルで表す ACID属性をもつ => ACID (コンピュータ科学) - Wikipedia 強み* トランザクションによってデータの一貫性を保証 * 正規化(キーに基づいて複数テーブルを連鎖させることでデータ管理) => 更新コストの削減 * SQLを使うことができ、複雑な条件での検索や集計を行う事ができる * 運用実績が豊富で、ノウハウが蓄積されている 弱み(1) データの読み込み部分に関してはレプリケーションによってスケールさせることができる。 一方で、書き込み部分におい

    RDBMSとNoSQLのメリット・デメリットについて
    kent-where-the-light-is
    kent-where-the-light-is 2016/11/04
    “(1) 参照や追加処理が大半のシステムに適している。更新や削除処理が多い仕組みには向かない (2) 複数サーバにデータが分散している場合は、サーバ間の整合性が保証されないケースが多い”
  • セッションに関するセキュリティリスクについて

    Webサービスにおけるセッションの役割と、セッションに関するセキュリティリスクとその対策を整理しました。 🍄 セッションとはセッションとは「リクエストとそのリクエスト元を結び付けるためのしくみ」です。通信で『接続(ログイン)してから切断(ログオフ)』するまでの一連の動作や時間を「セッション」と呼びます。このセッションにより、特定のユーザーがどのような状態にあるかを追跡できます。 🏈 セッションで大切なこと セッションにはidだけをセッションで保存して、データはサーバ側に保存する セッションには重要なデータを保存しない(データの改竄や削除が容易なため) 😸 セッションハイジャックユーザーのセッションidを盗むと、攻撃者がそのユーザーと偽ってWebアプリケーションを利用できてしまいます。これを「セッションハイジャック」と呼びます。 次のようにJavaScriptCookieを盗み取る方

    セッションに関するセキュリティリスクについて
    kent-where-the-light-is
    kent-where-the-light-is 2016/09/09
    “有効な対策としては、ログイン成功時に古いセッションを破棄して、新しいセッションを生成する”
  • i18nについて | 酒と涙とRubyとRailsと

    RailsのWebアプリケーションを英語化(多言語化)をサポートしてくれるGem「i18n」の紹介です。 🎂 i18nのベーシックな使い方デフォルトの言語を日語にするには、config/application.rbの次のように指定します。

    i18nについて | 酒と涙とRubyとRailsと
    kent-where-the-light-is
    kent-where-the-light-is 2016/09/02
    “app/controllers/application_controller.rbに以下を追加すれば、パラメータからlocaleを判定することが出来るようになります。”
  • Rails 5.0.0.beta2 APIモードについて調べてみた

    「Using Rails for API-only Applications — Ruby on Rails Guides」を中心に、Rails 5.0.0.beta2 API modeについて少し調べてみたのでそのメモです。 🐠 APIアプリケーションのおさらいまず、ここではAPIアプリケーションを「GitHub Developer | GitHub Developer Guide」のように、プログラムがアクセスすることを前提としたWebアプリケーションと考えいます。 クライアントサイドにNativeアプリケーションがあり、バックエンドにRailsのアプリケーションがJSONのリソースを扱うことを想定しています。 🐰 なぜJSON APIRailsを使うのか?Railsが提供しているCoCのベストプラクティスを有効活用して、ビジネスロジックをスピーディかつ柔軟にAPIを構築できる点

    Rails 5.0.0.beta2 APIモードについて調べてみた
    kent-where-the-light-is
    kent-where-the-light-is 2016/08/11
    “通常のWebアプリよりも、Middlewareが少ないので応答性能が向上する - ApplicationController => ActionController::APIを継承する - GeneratorでのViewやAssetの生成が行われない(フロントエンド側が行うことを想定)”
  • Action Mailerの使い方

    Railsにはメールを送信してくれるAction Mailerという機能が標準で組み込まれています。 この機能を使えばアプリケーションからメールを簡単に送信できます。 😸 環境設定Development環境で、メール送信に関するエラーをログに出力するようにします。 # config/environments/development.rb config.action_mailer.raise_delivery_errors = true # config/environments/development.rb # ↓ 以下を追加 config.action_mailer.default_url_options = { host: localhost, port: 3000 } config.action_mailer.delivery_method = :smtp config.actio

    Action Mailerの使い方
  • rbenvをupdateして最新のRubyバージョンをインストール

    Mac/Homebrew環境でrbenvをupdateして最新のRubyバージョンをインストールする手順です。 「rbenv」はRubyの複数バージョンを切り替えることができるしくみです。 👽 アップデート手順Homebrewでrbenv, rbenv-buildを最新にします。 # Homebrewをアップデート brew update # ruby-buildをアップデート brew upgrade ruby-build # インストール可能なrubyのバージョンを確認 rbenv install --list # Rubyの指定したバージョン(今回は2.4.1)をインストール rbenv install 2.4.1 # 通常使う Rubyを設定 rbenv global 2.4.1 # 設定結果を確認 rbenv versions

    rbenvをupdateして最新のRubyバージョンをインストール
  • Active Record 3つのTipsを紹介 [Distinctの実行、結果を配列/Hashで受け取る] - 酒と泪とRubyとRailsと

    Active Record 3つのTipsを紹介 [Distinctの実行、結果を配列/Hashで受け取る] Jan 13th, 2013 Tweet 今回はActive Recordに関する3つのTipsを紹介します。 (1) Active RecordでDistinctを実行して結果を受け取る (2) Active RecordでSQLを実行して、Hashのリストで受け取る (3) Active Recordで特定のカラムの一覧を配列で受け取る RailsのActive Recordの使いやすさを身にしみて感じますよ^^ (1) Active RecordでDistinctを実行して結果を受け取る Active RecordでDistinctを実行する場合は以下で結果を受け取ることができます。 (ユニークな名前の一覧を返してくれます)

    kent-where-the-light-is
    kent-where-the-light-is 2016/05/04
    “sql = "SELECT * FROM hoge;" results = ActiveRecord::Base.connection.execute(sql) results.to_a(:as => :hash) #=> [{hoge: 1, foo: "abc"}, {hoge: 2, foo: "def"}]”
  • RSpecがさらに捗る shoulda-matchers のマッチャ 一覧 - 酒と泪とRubyとRailsと

    RSpecがさらに捗る Shoulda-matchers のマッチャ 一覧 Jan 16th, 2013 Tweet shoulda-matchersはRSpecでのテストを強力にサポートしてくれるマッチャー集です。全米が驚くくらいの多数のmatcherがありますw RailsのRSpecが捗りますよ^^ thoughtbot/shoulda-matchers · GitHub

  • Hamlが5分で分るチートシート [Rails初心者チュートリアル]

    今回はRubyの代表的なテンプレートエンジン「haml」を使って、RailsのViewを書き換えてみます。また、Hamlをすでに使っている人向けにも適したTips的なチートシートを作りました! 🍄 RailsのViewとは?Railsでは次のようなMVC(Model, View, Controller)のしくみ使ってWebアプリケーションを作っていきます。 Model(モデル): 主にデータベース(MySQLやPostgreSQL)とのやりとりを担当 View(ビュー): 主にWebブラウザのhtmlの表示を担当 Controller(コントローラ): View(ビュー)とModel(モデル)との間の橋渡しを担当 今回はブラウザで簡単に確認できるViewの部分を変更してみます。 😎 Hamlとは?『Haml』とは簡単にいうとHTMLをより簡単に書くためのビューテンプレートエンジンです。

    Hamlが5分で分るチートシート [Rails初心者チュートリアル]
  • Ruby on Railsを仕事にしていくための第一歩 - 酒と泪とRubyとRailsと

    最近仕事Railsコードレビューをする時間が長くって、いろいろ指摘するんですが、 Railsって「Railsチュートリアル」には書いていないのに覚えないと仕事にならないこと多すぎだなと気付かされます。 どこでどんなふうにすれば、プロになろうとしている人が最短距離で知識を獲得できるかはわからないですが、 今思っている特に大事だなと思うことつらつらと書いていきます。 😀 プログラミングの重要な要素まず、Railsの前にプログラミングで全般的に特に重要と思っている要素を紹介します。 - リーダブルなコード - ネーミングルールについて - 言語・フレームワークのルール - 変数のスコープについて - プロジェクトの設計思想 - オブジェクト指向・コードの再利用性 - 正しいテストケースを作る プロジェクトによって変わるので、すべては書きませんが、ぜひ意識してどこを学ぶべきかを考えてみてくだ

    Ruby on Railsを仕事にしていくための第一歩 - 酒と泪とRubyとRailsと
    kent-where-the-light-is
    kent-where-the-light-is 2015/11/08
    “pluck を上手に活用して下さい(ARのオブジェクトを作らないのでSQLのコストが減ります)”
  • 1