タグ

ブックマーク / y-yagi.tumblr.com (10)

  • Rubyのwarningから不要なwarningを除外する

    Rubyのwarningは、使用していない変数やメソッドの再定義を教えてくれたりして大変便利です。 しかし、残念ながらwarningは無効になっている事が多い印象です。 理由は色々あると思いますが、その一つに、使用しているgemで大量にwarningが発生してしまい、それが邪魔になってしまっているから、というのがあるのではと思います。 例えばRailsアプリの場合だと大量のgemを使用しているかと思います。来知りたいwarningはアプリで発生しているwarningかと思いますが、gemからwarningが大量に出てしまう為、来見たいwarningが埋もれてしまう事もあるかと思います。 そんなwarningが出るgemは、出来れば頑張って直していきたいところですが、中々難しい事もあるかと思います。PR投げてもマージしてくれない事もありますしね。そのため、そのようなwarnigは一旦無視

    Rubyのwarningから不要なwarningを除外する
    clavier
    clavier 2018/02/17
  • [Rails] `belongs_to_required_by_default`を設定しているのに効かない場合の対応 | 日々雑記

    Rails 5.0.0からbelongs_to_required_by_defaultというconfigが追加されました。 これはbelongs_to associationsのrequireをdefaultでtrueにするかどうかを指定するためのconfigで、Rails 5.0.0以降で新規にRailsアプリを生成するとデフォルトでtrueが設定されます。 値の設定はconfig/initializers/new_framework_defaults.rbで行われています。 # config/initializers/new_framework_defaults.rb # Require `belongs_to` associations by default. Previous versions had false. Rails.application.config.active_r

    [Rails] `belongs_to_required_by_default`を設定しているのに効かない場合の対応 | 日々雑記
  • Bootsnapについて

    Bootsnapに調べたのでメモ。なお、確認した際のバージョンは1.0.0です。 Shopifyが出しているBootsnapというgemがあります。説明に書いてある通り、巨大なRuby / Railsのアプリを高速化する為のgemらしいです。 何をやってくれるかというと、Ruby, Active Support、YAMLのメソッドの呼び出しの最適化、及び、キャッシュをしてくれる、というものらしいです。 なお、1.0.0の時点でサポートしているプラットフォームはMacOSLinuxだけです。Windowsは未対応。 また、Rubyは2.3.0以上のみサポートしています。 使い方Gemfileにgem 'bootsnap'を追加し、下記設定をrequire 'bundler/setup'の後に定義すればOKです。 require 'bootsnap' Bootsnap.setup( cach

    Bootsnapについて
    clavier
    clavier 2017/06/05
  • Rails 5に入ったDB破壊系taskの防止処理について

    小ネタ。 Rails 5から、production environmentでのDB破壊系のtaskの実行を防止する仕組みが入りました。 例えば、production environmentでdb:dropを実行しようとすると、下記のようなエラー(ActiveRecord::ProtectedEnvironmentError)が発生します。 $ RAILS_ENV=production ./bin/rails db:drop rails aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database If you are sure you want to continue, run the sa

    Rails 5に入ったDB破壊系taskの防止処理について
  • Rails 5から導入されたmigration versioingについて

    Rails 5から、migration versioingという機能が追加されました。 これは、generatorが生成するマイグレーションファイルに、Railsのどのバージョンで生成されたマイグレーションファイルなのかという情報を付与し、そのバージョン情報によりAPIの挙動を変える、というものです。 実際にRails 5.0.beta1でマイグレーションファイルを生成してみると、以下のような内容のファイルが生成されます。 $ ./bin/rails g model book name:string # db/migrate/20160124064808_create_books.rb class CreateBooks < ActiveRecord::Migration[5.0] def change create_table :books do |t| t.string :name t

    Rails 5から導入されたmigration versioingについて
  • RailsでPostgreSQLのマテリアライズドビューを使う

    少し調べたのでメモ。 なお、調べた時のバージョンは、PostgreSQL 9.4.2のRails 4.2.1。 マテリアライズドビューとは、簡単に言うとテーブルのように実体を持ったビューのこと。PostgreSQL 9.3から使用可能。 ビューは使用するたびに、結合したり演算したりしますが、マテリアライズドビュー計算結果を保持するのでビューに比べるとパフォーマンス的に有利とのこと。 マテリアライズドビューは CREATE MATERIALIZED VIEW コマンドで作成する事が出来ます。 CREATE MATERIALIZED VIEW mymatview AS SELECT * FROM mytab; マテリアライズドビューはビュー作成時のデータで構成されているので、データが常に最新であるとは限りません。最新のデータを使用したい場合はビューのリフレッシュを行う必要があります。 REFR

    RailsでPostgreSQLのマテリアライズドビューを使う
  • Railsのroutes.rbを複数のファイルに分割する

    タイトルの通り。 ちょっと調べたらDHHのgistが見つかって、割と良さそうだったのでそれをそのまま使用する事にしました。 # config/routes.rb class ActionDispatch::Routing::Mapper def draw(routes_name) instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb"))) end end Rails.application.routes.draw do draw :api end # config/routes/api.rb namespace :api do namespace :v1 do resources :users, only: %i(index show) end end こんな感じ。 一点問題があって、このままだと

    Railsのroutes.rbを複数のファイルに分割する
  • Railsのweb-consoleについて

    Rails 4.2から導入されたweb-consoleについて試してみたのでメモ。なお、試したバージョンは'2.0.0.beta3'。Rails 4.2.beta1だと、2.0.0.beta2がGemfileに記載されているが、2.0.0.beta2はルーティングエラー時にエラーになるバグがあるのでbeta3で。 ### web-consoleとは Rails 4.2のMajor Featuresの一つ。 デフォルトエラーページ用のデバッギングツールで、ブラウザ上からインタラクティブにconsoleの操作が出来る。 [github上の画像引用](https://github.com/rails/web-console)。 エラーが起きた箇所で操作が出来るだけではなく、traceを選択する事で、選択した箇所での値の確認も出来る。[Better Errors](https://github.c

    Railsのweb-consoleについて
  • Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? を開催した

    Ginza.rb.第8回を開催しました。今回は参加者の方に事前にGemfileをアップして頂き、使用しているgemについて説明をして頂く形式で実施。 Gemfileの置き場は[こちら](https://github.com/ginzarb/meetups/issues/6)。 話に上がったgemについて以下にずらずらと。 ### [gon](https://github.com/gazay/gon) Rails側の変数をJavaScriptに渡す事が出来るgem。 controllerから大量のデータをJavaScriptに渡す必要がある場合に便利。 詳細は[RailsCast](http://railscasts.com/episodes/324-passing-data-to-javascript?language=ja&view=asciicast)参照。 ### [Better E

    Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます? を開催した
  • turbolinksについて

    rails4で追加されたturbokinksについて、自分用メモ。なお、下記は2013/07/28時点での話。 turbolinksとは簡単に言うと、ページ読み込みを高速化するための機能。 ページ全体を読み直すのではなく、body/title等一部分のみを書き換える。 asset(JS/CSS)はそのまま利用されるので、その分高速。 処理概要ざっくり書くと、以下のような流れ。 クリックイベントをハンドリング現在のページをキャッシュXMLHttpRequestでリンク先のデータ取得URLを書き換えtitle/body/csrf token(あれば)を書き換えURLの書き換え等は、History APIを利用して実施。その為、History APIを使えないブラウザでは当然動作しない。IE 9以下とか。 問題点turbolinksでページをロードすると、jQueryのreadyイベントとDOM

    turbolinksについて
  • 1