Ruby関連のことを調べてみた2020年04月12日

Ruby関連のことを調べてみた2020年04月12日
目次

Ruby on Railsで作るランキング機能。ユーザーが売り上げ金額を入力し、運営が承認し、そして反映、のやり方

Ruby on Railsでランキング機能を実装しようと考えています。
ランキングの順位は売り上げ金額の多い順に1位2位…としていきます。
各ユーザーに売り上げ金額を入力してもらい、こちらが承認してランキングに反映させる、というものを作りたいです。

この部分を事を実現するためにはどの様なフローを取れば良いでしょうか?
管理画面を作る?権限を持つユーザーを作る?とは調べると出てくるのですが
具体的にどうすれば良いのか。わかりません。。。
初、という事でランキングの時はこの考え方、というものが一切ない為質問させて頂きました。

よろしくお願い致します。

元記事を表示

Dockerを使った開発環境でページネーション機能を作る

# {dockerを使った開発環境でページネーション機能}

今回は有名なgem であるkaminariを使ってページネーション機能を実装する。

## 記事の対象者
・Dockerの環境構築が出来る方
・ページネーション機能を一から知りたい方

###ページネーション機能 とは??
ページネーション機能とは、大量のデータをviewで表示する際に、全部表示するのではなくページごとに分けて表示する方法である。

## 開発環境
Rails 5.0.0.1
bootstrap 4.0.0
今回はbootstrapを導入し、Dockerの環境構築が済んでいる状態を想定する。

## デモ
###1. gemをインストール

Gemfile内に“`gem ‘kaminari’“`と記述する。
その後以下のコマンドを実行する。

“`
$ docker-compose build
$ docker-compose up -d
“`

“`$ docker-compose build“`はgemのインストールやdockerのimageを実行するときに使う。
“`$ docke

元記事を表示

【Rails】carrierwaveとAWS S3とHerokuで画像をアップロード

画像アップロードに苦戦したいい思い出が掘り起こされたので備忘録的にメモ

「Railsアプリケーションで画像アップロードをしたいけど方法がわからない…」
「ローカル環境ではうまく動いたのに本番環境だとなぜか表示されない…」  
「せっかくだしAWSを使って画像をホストしてみたい…」
という方向けです(主に自分がそうでした)

##手順
①gemを用意
②carrierwaveを使って画像アップローダーの準備
③画像の保存先を開発環境と本番環境でそれぞれ設定
④AWS S3の設定
⑤viewファイルにイメージタグを設置
⑥Heroku用に色々設定する

##①gemを用意
“`
gem ‘carrierwave’ #画像アップローダーを設置するためのgem
gem ‘fog-aws’ #AWS S3用gem
gem ‘dotenv-rails’ #S3へのアクセスキーを環境変数として保存させる
“`

`$ bundle install`しましょう。

##②画像アップローダー準備

“`
$ rails g uploader Image   #アップローダー名

元記事を表示

オブジェクト指向設計実践ガイドまとめ

# はじめに
オブジェクト指向設計実践ガイドを読んで気になったことをメモしました
今まで「何がいい設計か分からず迷っていた」ところに指針を与えてくれるいい本でした
分からないところや納得できないところも少しありましたが、とても為になりました
[オブジェクト指向設計実践ガイド Amazon](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E8%A8%AD%E8%A8%88%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-Ruby%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8B-%E9%80%B2%E5%8C%96%E3%81%97%E3%81%A4%E3%81%A5%E3%81%91%E3%82%8B%E6%9F%94%E8%BB%9F%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A

元記事を表示

data_fieldで過去日付の登録を防ぐ方法(Rails)

#はじめに
Railsでformを使ってデータを登録する事は非常に多いと思います。その中で日付を登録する事も多いと思いますが、ユーザーに過去の日付を登録させたくないケースがあるかと思います。
今回はその対処方法を紹介します。

#環境
– Rails:5.0.7
– Ruby:2.5.1

#前提
自分が開発している予約アプリを例にしています。reservationモデルのreceivedate(受取日)に制限をかけます。カラム型はdataです。

#ソースコード(form)
“`:haml(html)
=form_for [@user, @reservation], url:{ action: :confirm } do |f|
.document-group-form__field
.document-group-form__field–left
= f.label :receivedate, ‘受取希望日’, class: ‘document-group-form__label’
.document-group-form__field

元記事を表示

「アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題」を自力で解いてリファクタリングした

プログラマ歴 == Ruby歴 == 6ヶ月 の若輩者です。

業務でのRubyコードの実装に周囲よりも多くの時間がかかっていることにもどかしさを感じています。そこで、演習を通じて実装スピードを上げたいと思い、前々から気になっていた[アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題を集めてみた(全10問)](https://blog.jnito.com/entry/2019/05/03/121235)の記事に掲載されている問題をを解いてリファクタリングしました。

結果的に、RubyのAPIへの習熟と簡易的ななアルゴリズムの勉強ができとても有益でしたので、学習のメモをまとめます。

はじめに自力で解いたコードと次にリファクタリング後のコードを載せ、リファクタリングのポイントを解説します。
(参考にできるコードが見当たらなかった場合は、リファクタリングせず自分のコードだけを載せています。)

「ここはもっとこうしたほうが良い」などのご指摘お待ちしております。

## 環境

“`bash
$ sw_vers
ProductName: Mac OS X

元記事を表示

jQueryを使って簡単なカテゴリー 一覧のモーダルを作成する

# はじめに
javaScriptが苦手で仕方ない私が苦しみ紛れにモーダルを作成をした時の記録です。
参考になるかわかりませんが、気休め程度にでもご覧ください
# 経緯
フリマサイトによくあるトップページにあるカテゴリー検索の機能
(こんなやつ↓↓↓)
[![Screenshot from Gyazo](https://gyazo.com/798936a108529ace45c0477d93593d08/raw)](https://gyazo.com/798936a108529ace45c0477d93593d08)

これの担当となった私はjavaScriptがどうしても苦手で実装に詰まってしまった時の話です。
何度トライしても思うように実装できなかった私
(何か他にもっと簡単であっと言わせるような方法はないものだろうか?)
と考え、思いついたのがモーダルの作成でした。
作ってみると意外と評判がよかったので投稿いたします。
# モーダルとは?
ある場所をクリックしたりすると突然出てくる小さなウィンドウのこと。
今回はカテゴリーから探すという部分をクリックすると一覧が表示されるモーダル

元記事を表示

【ruby】『ruby入門(メモ3)』恐竜判定(if … elseとcase when)

###0.はじめに
今回は判定文(if,when)を勉強する。
参考urlの内容を少しだけアレンジ。
この子からパワーを貰って、勉強を進めている。

![indominus_20200410.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/494408/1fe70c53-2848-b00d-3217-080291075c9a.jpeg)

###1.判定文(if else)

2つの条件について判定して、何かをさせたいとき下記のように記述できる

__ if 条件1__
__  条件1の時実行する処理__
__ else__
__  条件1以外の処理__
__ end__

###2.判定文(3つ以上の条件について判定したいとき if elsif else)

3つ以上の条件について判定して、何かをさせたいとき下記のように記述できる

__ if 条件1__
__  条件1で実行したい処理__
__ elsif 条件2__
__  条件2で実行したい処理__
__ else__
__  条件1、2以外

元記事を表示

【rails】production環境でバッチ処理の環境読み込みがdevelopmentになってしまうときの対処法

#実行環境
AWS EC2+RDS
Rails 5.2.4.2
Ruby 2.7

#経緯
自動でメール送るバッチ処理を本番環境で行うために、
rakeファイルにタスクを書いた状態で

`$ bundle exec whenever RAILS_ENV=production`
(自動化の設定ファイルの実行コマンド)
を実行し、

`$ bundle exec whenever –update-crontab RAILS_ENV=production`
(crontabへの書き込みコマンド)
を実行しました。

その後、タスクの挙動を
`$ tail -f log/cron.log`で見てみると
エラーが発生していた。

#エラー内容
rake aborted!
ActiveRecord::StatementInvalid: Could not find table ‘テーブル名’

#原因
`$ bundle exec whenever RAILS_ENV=production`
実行後のターミナルでの表示が以下のようになっていました。

“`
* * * * /bin/bash

元記事を表示

素人がWebサービスを作る備忘録(実装編)3

#はじめに
この記事は初めてwebサービスを作る人間のアウトプットも兼ねた備忘録です。その為、何か問題点があった場合は遠慮なく仰ってください。現時点はrails tutorialのアウトプットが中心です。一通り終わった後にいろいろな機能を追加していこうと思っております。
#カスタムヘルパー
railsは多くの組み込み関数を使用している。(関数とは与えられた引数を元に何らかの処理を行いその結果を返すもの)この___組み込み関数を自分で作ることができるがこのことをカスタムヘルパーという。___

“`ruby:application_helper.rb
module ApplicationHelper

def full_title(page_title = ”) #とりあえずタイトルは空がデフォでprovideで指定したらいれる
base_title = “Ruby on Rails Tutorial Sample App”
if page_title.empty? #空のままだったらbase_titleを返す
base_title
else

元記事を表示

webページHTMLから簡単に配列は作れないものか?というあなた

##はじめに
こんにちは初めてキータ記事を投稿するものです。誤字脱字には目をつぶっていただけたら嬉しいです。
私が最近通っている某プログラミングスクールで習ったancestryジェムを個人アプリで使ってみようかなと思ったのですが、欲しいデータを様々なワードでググってみても出てこない(当然ですが)、そこで置換機能を使ってwebページからデータを整形して使ってしまおうということでいろいろ勉強したことを記事にしようと思います。

#webページからデータを所得して配列を作る
私の場合は業界のカテゴリーを作りたかったので業界動向serch.comさんを参照させてもらいました(https://gyokai-search.com/2nd-genre.htm)

2fb4da334f942a3b460f3a34daad80fd.pngDockerを初めて導入して基本操作する(2020.4時点)

雑食系オンラインサロンにてDokerの重要性を理解しましたので、
このたび、ポートフォリオづくりの流れで実装していきます。

本稿は、
DockerHubアカウント取得 → DockerDesktop(mac)インストール → 操作の練習
という流れです。

自分と同じように、
何していいかわからないゼロスタートの方にわかるようにしたいと思っています。

前提
——-
macOS : Catalina 10.15.3
ruby : 2.5.1
Rails : 5.2.4.1
ターミナル使用
Docker version 19.03.8

では、はじめましょう!

1.Dockerをインストールする
————

・Docker for Macをインストールする

・DockerHubのアカウントを作ってログイン、DockerHubからimageをダウンロードします。


・DockerHubのURLはこちら
  https://hub.docker.com/editions/community/docker-ce-desktop-mac

![image.

元記事を表示

パンくず作ってみた[Ruby on rails]

# はじめに
ruby on railsのパンくず機能について簡単に投稿します。
# パンくずとは
ユーザーが訪れたサイトのどの位置にいるのかをわかりやすく示した道しるべのようなものです。
[![Screenshot from Gyazo](https://gyazo.com/4dce48bf0b9bc3885a59809f3a5d2ea4/raw)](https://gyazo.com/4dce48bf0b9bc3885a59809f3a5d2ea4)

サイトでよく見るこんな奴です。
これを実装するための手順について説明します。

# ①gretelの導入
パンくずを実装するためにgretelというgemを導入します。
はじめにgemfileにgretelを追加します

“`:Gemfile
gem “gretel” ⬅️追加
“`
gemを追加したらインストール

“`
$ bundle install
“`
続けて

“`
$ rails g gretel:install
“`

このコマンドによって下記のファイルが生成されます。
config/breadcrum

元記事を表示

Ruby on Railsのチュートリアル ~第4章Rails風味のRuby~

# はじめに
webアプリケーションを作るための学習記録
(マッチングアプリを作る予定)

こちらのチュートリアルを片っ端から進めていく
【Ruby on Rails チュートリアル】
https://railstutorial.jp/

# 第4章Rails風味のRuby
## まとめ
– Rubyは文字列を扱うためのメソッドを多数持っている
– Rubyの世界では、すべてがオブジェクトである
– Rubyではdefというキーワードを使ってメソッドを定義する
– Rubyではclassというキーワードを使ってクラスを定義する
– Railsのビューでは、静的HTMLの他にERB (埋め込みRuby: Embedded RuBy) も使える
– Rubyの組み込みクラスには配列、範囲、ハッシュなどがある
– Rubyのブロックは (他の似た機能と比べ) 柔軟な機能で、添え字を使ったデータ構造よりも自然にイテレーションができる
– シンボルとはラベルである。追加的な構造を持たない (代入などができない) 文字列みたいなもの
– Rubyではクラスを継承できる
– Rubyでは組み込みクラ

元記事を表示

Rubyで素数を出力する〜エラトステネスの篩(ふるい)〜

こんにちは、Ruby歴半年のプログラマです。

基本的なアルゴリズムを習得したいと考えて、『Pythonではじめるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量』(以下、Pythonではじめるアルゴリズム入門)を読んでいます。

『Pythonではじめるアルゴリズム入門』では、その書籍名の通りPythonでサンプルコードが実装されているので、Rubyの練習のためにRubyに書き換えた上でアレンジを加えました。

より良い書き方などありましたら教えてもらえると嬉しいです。

## 環境

“`bash
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
BuildVersion: 19E287
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
“`

## Ruby版エラトステネスの篩(ふるい)
“`ruby
def get_prime(input_number)
return [] if input_

元記事を表示

使えるコードレビューツール

##コードレビューツール
コードレビューツールとは、文法・バグ・コーディングスタイルを自動で分析するツールです。
代表的なものとしてRubocop、ESlintなどがあります。
##Eslint
EslintはJavascriptの静的コード解析ツールです。Javascriptで書かれたコードを解析し、明らかなバグ・不適切なコーディングスタイルを指摘してくれます。
参考サイト
[Eslint公式(英語)](https://eslint.org/)
##Rubocop(ルボコップ)
RubocopはRubyの静的コード解析ツールです。「インデントが揃っていない」 「無駄な改行・スペースがある」などの指摘をRubyStyleGuideに基づいて行ってくれます。
###Rubocopの導入
Gemfile

“`
#省略
group :development do
gem ‘web-console’, ‘>= 3.3.0’
#省略
gem ‘bullet’
gem ‘rubocop’, require: false #追加
end
#省略
“`
ターミナル

“`
$b

元記事を表示

【ruby】『ruby入門(メモ2)』文字列(恐竜)を表示しよう(windows10+ruby2.3.3)

###文字列表示プログラム

“`ruby:ruby_string
# ” 文字列を全て出力
puts “Tyrannosaurus #{3*4}”
puts ‘Tyrannosaurus #{3*4}’

print ‘Tyrannosaurus_print ‘
#文字列おける+,*
#+:文字列の連結
puts “Tyrannosaurus “+”Rex”

#*の後ろの数字の数だけ表示
puts “Tyranosaurus “*5
“`

###実行結果

“`
c:\ruby_pg>ruby ruby_string.rb
Tyrannosaurus 12
Tyrannosaurus #{3*4}
Tyrannosaurus_print Tyrannosaurus Rex
Tyranosaurus Tyranosaurus Tyranosaurus Tyranosaurus Tyranosaurus
c:\ruby_pg>
“`

###3.実行結果からわかること

__(1)printでは「文字列表示のみ」だがputsは「文字列の後ろに改行を出力する」__
__(2

元記事を表示

【Rails】seedファイル使い方

#はじめに
学習中の備忘録です。

#概要
* 通常のデータ登録
* ancestryを使用した際のデータ登録

#前提
Rails 5.2.4.2

#通常のデータ登録
今回は格言をランダムで表示する為に、messageテーブルにcontent,author,descriptionを登録する。

“`ruby:seeds.rb
Message.create([{content: “自分自身を信じて~”, author: “ゲーテ”, description: “ドイツの詩人”},
{content: “たいていの人は~”, author: “バーバラ・ブラハム”, description: “米国の女性ビジネスコンサルタント”},
#~省略~
{content: “人間のほほえみ~”, author: “マザー・テレサ”, description: “カトリック教会の修道女、ノーベル平和賞受賞”}
])
“`
rails db:seedを実行

“`:ターミナル
% rails db:seed
“`
seed後のmessageテーブル

元記事を表示

Ransackを利用した検索フォームの作成方法

# Ransackとは?
[公式リファレンス](https://github.com/activerecord-hackery/ransack)に
>Ransack enables the creation of both simple and advanced search forms for your Ruby on Rails application

とある通り、Ransackとは**Ruby on Railsを用いて開発しているアプリケーションに検索フォームを作成するためのGem**です。

## Ransackのインストール
Gemfileに`gem ‘ransack’`と追記して`$bundle install`。以上です!

#Ransackの使い方
本記事では、私がRansackを勉強する際に作成した[こちらの簡単なアプリ](https://github.com/yohei222/ransack_practice)で、Ransackを使っている箇所を中心に説明していきます。
*Ransack以外の説明が少ないため、全体像を掴みたい場合は[ソースコード](https:/

元記事を表示

Railsチュートリアル9章攻略の第一歩を踏み出したい!【Remember meチェックボックス編】

##はじめに
Railsチュートリアル9章の内容について、少しでも理解の助けになるよう簡単にまとめてみました。
【[セッション永続化編](https://qiita.com/kurawo___D/items/18807bdce09c760f976b)】に引き続き今回は、【Remember meチェックボックス】についてまとめていきます!

##こんな方に読んで欲しい
Railsチュートリアルにてログイン機能を実装しており、尚且つ9章を終えたが理解度があまり足りていないかもと感じている方。
あと私自身。

##内容
セッション永続化を、ユーザーが自由に選択できるようにするためのチェックボックス機能の実装。

内容のほとんどを箇条書きでまとめてあります。
キリの良いポイントまで一旦まとめてから、コードの記述を行っています。

演習に関しては割愛してます。

##実装手順
__1.Remember meチェックボックスの実装__
__2.Remember meチェックボックスをテスト__
__3.Remember me機能自体のテスト__

##1.Reme

元記事を表示

OTHERカテゴリの最新記事