Ruby on Rails

Railsでサイトマップを作成

Railsでサイトマップを作成した時のメモ XMLサイトマップの作成 リンク先の記事の方法でxmlの作成から定期更新まで実装できます。 post.simplie.jp サイトマップの内容 食べログのサイトマップを参考に値の設定を行いました。 https://tabelog.com/sitemap.x…

Railsでいいね機能

個人開発しているサービスにいいねボタンをつけるためのメモ。 イメージ 親テーブル posts comments 子テーブル likes 投稿にもコメントにも「いいね」できるようにしたい。 課題 親テーブルが複数ある時にテーブル設計をどうするか。 参考: 複数のテーブル…

Rails5(Turbolinks5)でGoogle Analyticsを設置

Rails5(Turbolinks5)の環境でGoogle Analyticsを設置した時のメモ。 Turbolinks Compatibilityに掲載されている情報に古さが出てきていたので他の方法を調べていたところ、turbolinksのissuesで同じテーマのやりとりを見つけたのでこちらを参考にしました。 …

Rails環境の構築

趣味の開発用にVPSでRails環境を構築した時のメモ。 Rails環境構築 rbenv + ruby-build $ sudo yum update $ sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf au…

Rails5で日本語化

Rails5で日本語化する時のメモ。 ./config/application.rb # Application configuration should go into files in config/initializers initializers以下の設定に変わったようです。設定は下記のissueを参考にしました。 https://github.com/rails/rails/iss…

TwitterボタンをTurbolinksに対応

TwitterボタンをTurbolinksに対応した時のメモ。 TwitterボタンをTurbolinksに対応 twttr_events_bound = false $ -> loadTwitterSDK -> bindTwitterEventHandlers() unless twttr_events_bound bindTwitterEventHandlers = -> $(document).on 'turbolinks:l…

Railsで多対多の関連をチェックボックスで設定

Railsで多対多の関連をチェックボックスで設定する時のメモ Model $ rails g model post name:string $ rails g model tag name:string $ rails g model post_tag post:references tag:references post.rb class Post < ActiveRecord::Base has_many :post_t…

RailsのテンプレートをBootstrapが適用されたslimファイルで生成する

RailsのテンプレートをBootstrapが適用されたslimファイルで生成する時のメモ。 RailsのテンプレートをBootstrapが適用されたslimファイルで生成 gem 'slim-rails' gem 'html2slim' gem 'bootstrap-sass' gem 'bootstrap-generators' $ bundle install $ rai…

Carrierwave使用環境でCapistranoでデプロイした時のメモ

Capistranoでデプロイした時に、Carrierwaveでアップロードした画像ディレクトリが削除(上書き)されてしまった時のメモ。 アップローダファイルを修正 下記のリンクを参考にアップローダファイルを修正 Carrierwave uploaded Images aren't persistent aft…

#18 テストデータを作成

ある程度動くようになってきたので、デバッグを兼ねた動作確認のためにテストデータを生成します。 Gemfile gem 'ffaker' seeds.rb 10.times do User.create(name: FFaker::Name.name, email: FFaker::Internet.safe_email, password: FFaker::Internet.pass…

#16 ユーザー名を表示

ユーザー名を表示します。現状ユーザー名の入力が必須項目ではないので、入力がない場合は匿名表示する処理をヘルパーに定義しました。これを各所で利用したいと思います。 def username(user) user.try(:name) || 'Anonymous' end 参考 【Rails】Helperを使…

#15 トップページの作り込み

第15回では、トップページに表示する質問一覧部分のレイアウトや要素を作り込んでいきます。日頃お世話になっているteratailを参考にしました。 ワイヤーフレームの作成 teratailのトップページの質問部分の構成をざっくりと書き起こしてみました。 今回、開…

#13 ドロップダウンメニューの作成

ドロップダウンメニューを作成します。ヘッダーエリアの中に要素が増えてきたので一部をドロップダウンメニューにまとめたいと思います。Bootstrapの公式サイトにそのまま使えるドロップダウンメニューのサンプルが置いてあったので、こちらを利用しました。…

#12 deviseでカラムを追加

ユーザー名を表示するためのカラムを追加します。 $ rails g migration AddNameToUser name:string 内容を確認して実行します。 $ rake db:migrate ユーザー名を編集するためにstrong parametersを設定します。 application_controller.rb before_filter :co…

#11 ransackで検索機能を作成

第11回では、検索機能をつくります。今回はransackを使います。 Gemfileに追加 gem 'ransack' $ bundle install 以下のリンクを参考にしながら作業を進めていきます。 activerecord-hackery/ransack 当初の実装 application_controller.rb before_filter :se…

#10 質問投稿ページのスタイリング

質問投稿ページのデザインを整えます。まずはヘッダーのボタンに質問投稿ページへのリンクを設定します。 application.html.slim = link_to 'Ask', new_question_path ユーザー情報ページで使用したスニペットを利用して、質問投稿ページに適用します。 質問…

#9 Bitbucketでプロジェクト管理

第9回では、ソースコードをGitで管理します。三日坊主で終わるかもしれないと思っていたこの開発も地道に継続できているので、Bitbucketにリポジトリを作成して管理していきます。 Bitbucketで新規リポジトリの作成 「ローカルディレクトリを設定する」のガ…

#8 サインアップページのスタイリング

第8回では、前回と同じ要領でサインアップ画面・ユーザー情報画面のデザインを整えていきます。Bootsnipp でスニペットを検索して、修正を加えながら適用していきます。 サインアップ Before After ユーザー情報 Before After

#7 ログインページのスタイリング

第7回ではログイン画面のデザインを整えます。今回はBootstrapのスニペットを集めたbootsnippを使います。サイト内からログイン画面に利用できそうなコードを検索して、erb2slim.comでHTMLからslimに変換して使用しました。bootsnippではキーワード検索だけ…

#6 RailsでBootstrapを導入

前回、Pingendoで作成した画面を適用していきます。事前にbootstrap-sassを追加してTwitter Bootstrapを使えるようにします。このタイミングでFont Awesomeを使うためにfont-awesome-railsも追加します。インストール方法・使い方はそれぞれ以下のリンクを参…

#5 Pingendoでレイアウトの作成

モックレベルの動作を目指して、要素の配置を確認するためにレイアウトを作成します。今回は、知人の紹介で気になっていたPingendoを使ってみたいと思います。 以下の2画面をつくります。 トップページ 質問閲覧ページ 早速Pingendoのサイトからダウンロード…

#4 回答機能の作成

第4回では、質問に回答する機能をつくります。 質問への回答機能 scaffoldを使用してテンプレートを作成します。 $ rails g scaffold answer user:references question:references content:text 生成されたマイグレーションファイルのquestion項目にnull: fa…

#3 仕様の作成

第3回に入る前に、改めて仕様を整理しました。実はこの時まで何をつくるか悩んでいたのですが、色々と考えた末にQ&Aサイトをつくることにしました。仕様の整理については「パーフェクト Ruby On Rails」を参考にしました。 パーフェクト Ruby on Rails作者: …

#2 deviseでログイン機能の作成

第2回では、メールアドレスを利用したユーザー登録・ログイン機能をつくります。 deviseの導入 参考サイトを見ながらdeviseを導入します。 [Rails] deviseの使い方 plataformatec/devise deviseとは ユーザー登録して、送られてきたメールのリンクをクリック…

#1 Railsの環境構築

ここ数ヶ月仕事の負荷が高かったため、仕事以外の開発から意識的に離れて過ごしていたのですが、落ち着く目処がついて、徐々に何かやりたい欲が湧いてきたので久しぶりに個人サービスを開発しようと思います。1日1~2時間程度の作業量を目安に、2~3ヶ月後のリ…

NoMethodError: undefined method `name' for nil:NilClass

has_manyで紐付けしているモデル間の挙動でエラーが発生した際の対応メモ 環境 Ruby 2.2 Rails 4.1 エラー内容 NoMethodError: undefined method `name' for nil:NilClass 原因 Ruby2.2とRails4.1の環境ではActiveRecordにバグがある(らしい) I think ther…

Railsで環境変数を設定する

Railsで環境変数を設定する時のメモ 最初はコマンドで設定したのですが、ログアウトすると設定した環境変数がリセットされていることにハマった気づいたので.bash_profileで設定しました。 .bash_profile $ vi ~/.bash_profile export RAILS_ENV=development…

Railsで現在の環境を確認する

Railsで現在の環境を確認する時のメモ 現在の環境を確認する $ rails console 環境を指定する $ rails console staging エイリアスを使用した場合 $ rails c staging 参考 Railsで現在の環境を確認する Rails のコマンドラインツール

omniauthでログイン後に元のページに戻る

omniauthでログイン後に元のページに戻る処理のメモ redirect_to request.env['omniauth.origin'] request.env['omniauth.origin']から元のページのURLを取得する。 参考 omniauthで、OAuth処理を始めたURLへコールバックしたい場合(リンクのみ) Deviseとo…

Deviseで追加したカラムを更新する

Deviseで追加したカラムを更新する時のメモ。追加したカラムの編集が反映されないエラーではまっていたのですが、いくつか記事を読みあさったところStrongParameterではじかれているとのこと。記事とドキュメントを参考にカラムを更新対象に追加する処理を行…