当社はCookieを使用して、お客様が当社のWebサイトでより良い体験を得られるようにしています。引き続き閲覧する場合は、プライバシーポリシーに同意したことになります。
当社はCookieを使用して、お客様が当社のWebサイトでより良い体験を得られるようにしています。引き続き閲覧する場合は、プライバシーポリシーに同意したことになります。
RuboCopのオプションに再入門するなぜ再入門したかそもそも今回なんでオプションを再入門しようと思ったかというと、以前LintとFormatをGitのコミット時に自動でかける方法で紹介したpre-commitにフックしてRuboCopを走らせる方法が完全ではなく、解決方法を探したのが発端。 具体的などんな問題だったかというと、RuboCopの設定ファイル(通常.rubocop.yml)内のExcludeにRuboCopの解析対象から除外するglobパターンを設定できます。 pre-commit経由でかけるとどうも除外されるべきものが除外されずにRuboCopの実行対象になってしまっていました。 これについてpre-commitをかけてる側(huskyとlint-staged)の設定の問題なのかと悩んでいました。同じ施策をとっている(週イチブログコミュニティや月イチ挑戦コミュニティでお世話
会社で議論になり、未だに私の中で決着がついていない問題を取り上げてみます。 Rubyのインスタンス変数を直接参照することについてです。 例えば、コンストラクタでインスタンス変数を設定します。 そして、インスタンスメソッドでそのインスタンス変数を直接参照して処理をして値を返却するということをします。 良い例ではないかもしれませんが、こんな感じのイメージです。 class PriceCalculation def initialize(price, tax) @price = price @tax = tax end def tax_included_price @price * (1 + @tax) end end 前提として、@priceや@taxはこのクラス内のみで使用され、外部からは参照されないものとします。 これに対し、同僚のドイツ人がインスタンス変数を直接参照するのは良くないから、
change_column change_column_null change_column_comment change_column_default change_column Railsのmigrationでカラムの情報を変更したい場合によく使うchange_columnですが、 change_column(table_name, column_name, type, options = {}) と変更したいtypeを設定してoptionsを設定すればいいので、add_columnなどとインターフェイスが変わらず設定できます。 change_column_null NULLのtrue/falseを切り替えたいだけの場合は change_column_nullが便利ですね。 change_column_null(:users, :nickname, false) このように設定できます
rescue_from で拾えない例外がある Rails が用意してくれている rescue_from は controller の外側で発生した例外を拾ってくれない。 例えばパラメータに不正なエンコーディングが含まれるときに、Rails は ActionController::BadRequest を例外として投げる。しかし、この処理は Rails の routing 層で行われているため rescue_from で捕捉することはできない。 そのため Rails の外で発生した例外を捕捉していない場合、ユーザには意図していないエラーページが見えている可能性がある。 Rails の外で起きる例外は exceptions_app で処理するのがお手軽 例えば config/initializers/exceptions_app.rb に以下のコードを書いておく(ErrorsControlle
背景 devise という gem があるが、warden をベースにした認証の仕組みだということだった。 devise を知るには、まず warden を知らなければなるまい。 そう思った俺は warnden を rack ベースでいじってみることにした。 warden とは これのこと。 https://github.com/hassox/warden wiki が充実していたのでかなりわかりやすかった。 https://github.com/hassox/warden/wiki とりあえずやってみる、以下メモ書き。 config.rb require 'rack' require 'pp' require 'warden' class Application def call(env) request = Rack::Request.new(env) response = if re
次の RuboCop マイナーバージョンアップとなる 0.72 から Rails Cops が外されます。今後 Rails Cops を使う場合は Gemify された rubocop-rails gem を使うことになるため、昨日リリースされた RuboCop 0.71 から警告が出るようにしています。 github.com また rubocop -R/--rails オプションも同じタイミングで削除します。 github.com RuboCop 0.71 は移行期間としているため RuboCop の Rails Cops を使う場合は、以下のような設定を加えてください。 Gemfile に rubocop-rails gem を追加して bundle install する。 gem 'rubocop-rails' .rubocop.yml に require: rubocop-rail
2019.5.7 追記 以下でお知らせしていた割引セールは終了しました。 現在は通常価格に戻しています。 お知らせ 本日2019年4月24日から2019年5月6日まで、電子書籍「Everyday Rails - RSpecによるRailsテスト入門」を以下のように値下げします。 最低価格 $19.00 → $17.99 希望価格 $23.00 → $21.99 Everyday Rails - RSpecによるRailsテスト入門 - Leanpub 今年はゴールデンウィーク(GW)が10連休になっています。 「この大型連休を使って何か新しい技術を学びたい!」という新人プログラマのみなさんを応援するためにこの特別企画を用意しました。 まだEveryday Railsを購入されていない方はこのチャンスをぜひ有効活用してください! Everyday Railsに関するQ&A Everyday
はじめに みなさんにdisられて久しいsprockets氏ですが、メリットはそのままこれまでの問題を解決してくれるsprockets-commonerという素晴らしいgemを見つけたので紹介します。 sprockets-commonerとは sprockets-commonerとは、Railsコミッターも在籍するShopifyで作られたsprocketsの拡張gemです。 このgemの機能の中でも特に嬉しいのは以下の2つの機能です。 1. node.js/ESnextでフロントエンドを書けるようになる sprockets-commonerを入れると、sprockets管理下のJSファイルをbabelでトランスパイルしてくれるようになります。 そのため、node.js/ESnextでフロントエンドを書けるようになります。 一応、sprockets次バージョンの4でもESnextは書けるように
Rails の Asset Pipeline を使っていると、 development 環境では動作していたのに、production 環境で画像が表示されない、 アセット(CSS、JS)が正しく取得できないという問題が起きることがある。 この問題は、いろいろとバリエーションがあるのだが、 今回は CSS 上で使用している画像が表示されないケースについて説明しようと思う。 想定環境は次のとおり。 環境 バージョン Ruby 2.0.0p598 Ruby on Rails 4.1.9 nginx 1.6.2 unicorn 4.8.3 次のような設定で、production 環境を起動しているとする。 config.serve_static_assets = false # アセットの配信は、Nginx が担当する config.assets.digest = true # フィンガープリン
Overview The Ruby on Rails web framework provides a library called ActiveRecord which provides an abstraction for accessing databases. This page lists many query methods and options in ActiveRecord which do not sanitize raw SQL arguments and are not intended to be called with unsafe user input. Careless use of these methods can open up code to SQL Injection exploits. The examples here do not inclu
(Last Updated On: 2018年10月7日)Railsで多用されているActiveRecordのインジェクションパターンを簡単に紹介します。出典はrails-sqli.orgなのでより詳しい解説はこちらで確認してください。特に気をつける必要があると思われる物のみをピックアップしました。 Exists?メソッド User.exists? params[:user] params[:user]などの使い方は危険です。RailsはPHPなどと同様にuser[]というパラメーターで配列化します。 ?user[]=1 が入力の場合、 SELECT 1 AS one FROM "users" WHERE (1) LIMIT 1 となり不正なクエリが実行されます。 Calculateメソッド CalculateメソッドはSQLの集約関数を実行するメソッドです。average、calcula
Hi. rigani_c です。 本記事では Rails における弊社 CSS チームの CSS 設計を、私の思想と併せて話します。 Sprockets を使うケースを想定しています。Sprockets は Rails 6 でもデフォルトのはず。。 また、これは未検証の設計です。 今後開発していくサービスにて導入予定の設計ですので、 大きな破綻がある可能性 があります。導入後に人柱報告しますね。 『壊れにくい CSS 設計』は全ての傷が致命傷となり得る CSS を壊れないように運用していくのは極めて困難です。 CSS は雑に書いても目的のスタイルを作れちゃいますから、設計を理解しているメンバーがプロジェクトから離れると CSS の壊死は始まり、着実に広がっていきます。 ???『なるほど完璧な設計っスねーっ 運用されないという点に目をつぶればよぉ~』 クラス名を繋ぎ合わせてプロジェクト全体に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く