Ruby関連のことを調べてみた2021年02月24日

Ruby関連のことを調べてみた2021年02月24日
目次

[ruby]何時から何時までの論理演算子

#はじめに
論理演算子のアウトプットさせてもらいまうす

#何時から何時までの論理演算子
たとえば、体調がいい日で18時から22時までの間しか筋トレができる時間がありません
これをコードにしていきたいと思います
体調がいい時をtrueで悪い時をfalseとして、時刻も同時に入力します。

“`ruby:例
def workout(muscle,hour)
if muscle && (hour >= 18 && hour <= 22) puts "筋トレできます!" else puts "筋トレできません" end end workout(true,18) workout(false,22) workout(true,24) workout(false,9) #実行結果 #筋トレできます! #筋トレできません #筋トレできません #筋トレできません ``` まず、muscle && (hour >= 18 && hour <= 22) ここの所で体調と、筋トレできる時間を判断しています &&はAかつBを表すことができる演算子なので今回だと、どっち

元記事を表示

Railsによるポートフォリオ制作録(Day 0)

## はじめに

こんにちは! 経済学部から情報学研究科の大学院に進学予定の学生です! 新卒でwebエンジニアになるために,就活用のポートフォリオを作成することにしたので,これからその制作過程を記していきます!

## 制作する予定のプログラム
– タイトル : 大学サークルマッチングアプリ(仮)
– 概要 : 新入生のサークル探しを支援するアプリ。サークルのジャンル,男女比率や飲み会の頻度などを指定して,サークルを検索することが可能。
– 機能
1. サークル検索機能(マスト)
2. サークル登録機能(マスト)
3. サークルページ編集機能(マスト)
4. ユーザ登録機能
5. ユーザログイン機能
6. ユーザページ編集機能
7. いいね機能
8. チャット機能
9. 通知機能
10. サークル推薦メール機能
– 詳しくまた要件定義します

## 制作期間
– 2021/2/24 ~ 2022/1/31
– 長く見積もると,10ヶ月ほどあるのですが,インターンや早期選考を狙おうと思うと,3・4ヶ月で作成

元記事を表示

【Rails】 退会機能を論理削除で実装する

はじめに

gemのdeviseを使用したユーザー機能に論理削除を実装したので、自身の備忘録として、また今後実装を考えておられる方の参考になればと思い投稿させていただいております。

(参考サイト)
・[Rails]paranoiaを使わずに退会機能を実装する(ユーザーを論理削除する)
https://qiita.com/yuto_1014/items/358d0a425193b12c969a

論理削除と物理削除について

今回は、ユーザー機能に論理削除を実装しましたので、こちらを例にご説明致します。
####●論理削除とは…
退会処理が行われるとユーザーはアカウントを使用できなくなります。
ただし、データ自体は記憶媒体(データベース)には存在します。

#####メリット
ー 誤って削除をしてしまった場合でも、データを復旧することができる。
ー 削除したデータも検索等で参照できる。

#####デメリット
ー データ量が膨大になり、データベースの容量の圧迫する可能性がある。
 (結果として、コストパフォーマンスを損なう可能性にも繋がる。)


###

元記事を表示

Railsでメモアプリを作る(入門)

# ここで使用している環境
OS: `Windows10`
IDE: `RubyMine 2020.2.3`
Rails: `6.1.0`

“`shell:Ruby
> C:\\Ruby30\\bin\\ruby.exe -v
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [i386-mingw32]
“`

# 注意

– 一部、分かりやすくするために冗長な説明をしている箇所があります。
– `アクション`を`関数`と呼んでいます。
– IDEにRubyMineを使用することを前提としています。

※ただし、やっていることは他エディタ/IDEでも同じなので参考にはなるかもしれません。

以上の点について、ご理解ください。

# プロジェクト作成
1. `New Project`画面を開く
2. `Rails`->`Application`を選択
3. `Location`に好きなディレクトリ(プロジェクト名になる)を指定
4. `Ruby SDK`で使用するRubyを選択
5. `Rails Version`でRailsバージョンを

元記事を表示

【Rails環境構築】Docker + Rails + Mysql

#本記事の目的

**DockerでRuby on Railsの環境構築(Mysql)**を行うことです。
DBにMysqlを使ったDockerの構築記事が少なかったため、備忘録も兼ねて投稿します。

#参考記事
https://qiita.com/kodai_0122/items/795438d738386c2c1966

#1. 開発用フォルダを用意する。

まず、ローカルでアプリ開発用のフォルダを作成します。
私の場合は *desktop/Docker/test_app* で作りました。フォルダ名はなんでもOKです。

cdコマンドで、作業フォルダへ移動します。

“`
$ cd test_app
“`

#2. 必要なファイルを用意する。
1で作成したフォルダ内に以下のファイルを作成します。

“`
$ touch Dockerfile
$ touch Gemfile
$ touch Gemfile.lock
$ touch entrypoint.sh
$ touch docker-compose.yml
“`

では、ファイルにコードをコピペしていきましょう。

元記事を表示

CSSで画面サイズを小さくすると、レイアウト崩れる問題

自身の備忘録を書いていきます。

最近cssでレイアウト完成!よしッ!て思って縮小して見たら
すごい勢いで**レイアウトが崩れる**ので
レスポンシブについて少し調べてみた。

#解決方法

“`
img.main {
width: ~~ px;
max-width: 100%;
height: auto;
“`
  
横幅の最大値を合わせる記述の
**max-width: 100%;**

高さを合わせてくれる
**height: auto;**
の記述をセットで足してあげる。

後はレイアウトに合った**width**を決めてあげれば
真ん中をキープしたまま画面縮小できる。
  

この時、余りmarginで横幅をいじらない方がいいらしい。
paddingで位置調整すると崩れにくいらしい。

cssって簡単そうに見えて奥が深くて楽しいです。

元記事を表示

[Ruby][LINE] ごみ出し日に LINE で通知する

# 概要

ごみ出しって忘れちゃうことありますよね :sweat_drops: 捨てられる曜日が限られた燃えないごみやペットボトルの日は特に忘れがちです。そして Google カレンダーの通知だと気づけなくて ?

そこで cron と Ruby を使用してごみ出し日に LINE ([LINE Notify](https://notify-bot.line.me/ja/)) で通知するようにしました。僕の場合は cron は Raspberry Pi 3 で動かしています。

# 方法

## バージョン情報

– Ruby 3.0.0
– Bundler 2.2.11
– Active Support 6.1.3

## コード

Gem は日付に関する処理のために Active Support のみ使用します。

“`rb:~/workspace/dustdas/Gemfile
source ‘https://rubygems.org’

git_source(:github) { |repo_name| “https://github.com/#{repo_name}” }

元記事を表示

AWS デプロイ時のエラー対応

## 前提
自分がAWSへのデプロイ時に遭遇したエラーの備忘録です。
EC2 の作成やRDSの設定などは既に済んでいる
Unicorn と Nginx を起動した時に出たエラーになります。
### エラー内容
production.log

“`bash
F, [2021-02-19T00:20:57.099109 #17387] FATAL — : [333532cb-cda3-4d39-9c25-6e18a14a0f6e]
[333532cb-cda3-4d39-9c25-6e18a14a0f6e] ActionView::Template::Error (The asset “application.css” is not present in the asset pipeline.
):
[333532cb-cda3-4d39-9c25-6e18a14a0f6e] 5: <%= csrf_meta_tags %>
[333532cb-cda3-4d39-9c25-6e18a14a0f6e] 6: <%= csp_meta_tag %>
[

元記事を表示

Jenkinsの代わりにCircleCIを導入したい

仕事でJenkinsが上手く動けないので、チームの皆さんは最近大変CI/CDのことを悩んでいます。

# 背景

所属するチームでJenkinsを使ってCI/CDを取り込んでいます。最近業務の量が大きくなったので、PRの数も大変増えて来ました。その故に、Jenkinsの負担も結構重くなりまして、下記の問題が行っています。
1. CIが重いので、単体テストは走れない状態で失敗になりました。
2. PRのレビューやマージすることが一旦止まれてしまう。
3. CDも影響されまして、デポロイも失敗になりました。

そして、最近ではなくて、いつでも存在している問題もあります。
1. CI結果は見辛い。コケっている原因を調べる際に、まずJenkinsをログインして、後はタスクを探して、その「**console出力ログ**」をちゃんと観ないと原因が分からない。
2. 今回のCI結果が後のタスクで被られる。CI結果を早く見ないと消えるの大変困っています。
3. 改修はややこしい。Jenkinsの改修はインフラの方を頼まなければならない。CIはそもそも開発を上手く進めていくツールと思うので、開発チームが

元記事を表示

2バイト言語で作れるメールアドレス、もじアドレス

もじアドレスとは、どんなWebサービスですか?

2バイト文字、つまり日本語の文字だけをアドレスにしてメールを送れるサービスです。もっと分かりやすく言うと、コンタクトフォーム自体を任意の文字で検索できるようにした感じです。実質日本語、漢字だけのメールアドレスを持てるような雰囲気になります。twitter質問箱のリアル版というか、ペイパルやホワットスリーワーズにインスパイアされて作りました。

そもそもこの もじアドレス というのはなんの役に立つのですか?

行政とか民間の企業は、個人と音声通話のみでコンタクトをとろうとすることが多いと思います。連絡したい相手の携帯番号を知っているのであれば、簡単なショートメールの1つや2つくれればいいのにな。と思う反面、それをやろうとするとスマホ&スマホの二台間でのやりとりが必要になってくる為、個人対組織では難しいですよね。

人の名前だけでテキストが伝達できれば、色々と社会がもう少しスムーズに

元記事を表示

VSCodeでRuby書くにあたってコード整形とか構文チェックとかが自動で走るようにした

## 背景
自分はこれまで主にEmacsを使ってコーディングをしてきており、たまにAtomを使ってきました。
特にこれらの開発環境に不満があったわけでもありませんが、goやelixierで標準装備されているコードの自動整形をRubyでも使いたくなり調べた所、色々方法はありましたがエディタと一体化させて使う上ではVSCode+Prettier(自動整形)+RuboCop(構文チェック)が便利そう且つ簡単そうだったので使ってみることにしました。
VSCodeはWindows, MacOS, Linux等の各OS向けバイナリがマイクロソフトから無料で提供されています。
ちなみに既存のコードはUTF-8が多いものの、まだEUC-JPのような文字コードのファイルも残っている。

## ゴール

以下のことを満たしたい。

1. 文字エンコーディングの自動判別。
2. リアルタイムなコードの自動整形。不必要な行・スペースや間違ったインデントなどはファイル保存のタイミングで自動修正して欲しい。
3. リアルタイムな構文チェック。おかしな書き方をしたらエディタ上で即時警告して修正を促して欲しい。

#

元記事を表示

[Rails][Mysql] いまさらだがポートフォリオにDockerを導入したので、コマンドをまとめる[備忘録]

# 導入理由
・祝日で就職活動が進まないので時間があった。
・Dockerの導入自体が現在のデファクトスタンダード(事実上の基準)であるから。
・今後もポートフォリオを改善する予定があるから。

# この記事に関して
記事にしておくことで、脳に焼き付けたいという完全なるワガママ投稿ですので、誤認識の点がありましたらぜひ教えてください。

# 頻出コマンド一覧

| dockerコマンド |       処理      |
| :— | —: |
| docker run|イメージ、コンテナを生成し、起動|
|docker start| コンテナを起動|
|docker stop | コンテナを停止|
|docker ps|起動中のコンテナを確認|
|docker ps -a|コンテナの一覧を表示|
|docker images|イメージの一覧を表示|
|docker rm|コンテナを削除|
|docker rmi|イメージを削除|
|docker build|dockerfileからイメージを作成|
|docker exec ~ bash|~コンテナにログイン|
|docker

元記事を表示

【Rails バリデーション基礎(小学生でも分かる解説)】

#バリデーションとは#

バリデーションとは、
`入力されたものをチェックすること`

例えるなら、飛行機に乗る前の荷物検査。

・重量オーバーしてたらダメ
・危ないもの持ってたらダメ

とか。

プログラミングは、主にログインや登録で使われる。

・入力されていないとダメ
・長いタイトルはダメ

とか。

#バリデーションの使い方(まずざっくり)#

大きく分けると、この3つを書く。

`①モデルに、バリデーション書く`

`②コントローラに、通った時と通らなかった時の動きを書く`

`③ビューに、通らなかった時のエラーメッセージを書く`

#バリデーションの使い方(具体的)#

先ほどの3つの流れに沿って。

###`①モデルに、バリデーション書く`###

“`models/sample.rb

validates :name, presence: true
(validates :チェックするもの, 何が: どう?)
“`
この場合だと、
「name」を、「存在」が「ある」かどうかチェックする。

「name」に何も書いてないとfalse
「name」に何か書いてあるとtr

元記事を表示

無駄に溜め込んだQiitaストック記事を滅する

先日、Qiitaの大型アップデートが発表されました?
[Qiita大型アップデートのベータ版リリースのお知らせ](https://blog.qiita.com/qiita-2101-update-beta-release/)

その中でも特に魅力的だと感じたのが、**記事のストックをカテゴリごとに分類出来る**
というものでした!

>

ストック機能のリニューアル

ストック機能は文字通り、Qiitaで得た知識をストックできる機能として提供を行なってきました。
しかし、知識をストックする機能としては利便性に欠ける部分も多かったかと思います。
今回、ストック機能のリニューアルを行い、よりQiitaが知識のストック場所として機能できることを目指しました。

>〜 中略 〜

>

カテゴリの追加

今までのストック機能では、タグによる絞り込みしか行えませんでした。今回、カテゴリという概念を追加し、ユーザーごとに自由に記事の分類を行えるようにしました。

これはありがたい!

元記事を表示

クラスとインスタンス②

# クラスの中に定義するクラスメソッドとインスタンスメソッド

値を作ることで、現実世界のあらゆる「もの」をコードで表現することが可能
同じ種類でも、その中でそれぞれ個性があるようなものも表現することが出来る

>
人間を表現する場合は、属性として身長・性別、動作に食べる・笑うなどをクラスに定義
あとは個別のデータを追加してインスタンスを生成する

現実世界の「もの」には、できる動作とできない動作があります。

>
車はアクセルやブレーキを踏むと「加速する」「減速する」という動作が可能
人間のような「食べる」「笑う」という動作は不可能
逆に人間にとってみても車が持つ動作は不可能

現実世界の「もの」のように、クラスとインスタンスでデータを作る場合も、
それぞれの動作、つまり`メソッド`をあらかじめ決めておく

>
メソッドはクラスに定義しますが、それぞれ
`クラスメソッド`と`インスタンスメソッド`の2種類がある

## インスタンスメソッド

インスタンスメソッドは、インスタンスから呼び出すメソッド
`インスタンスごとの個別の情報(属性値)を使った処理に使用`

– Carクラス

元記事を表示

Railsでfields_forとaccepts_nested_attributes_forを使ってhas_oneで関連付けしたネストしたフォームを作る

#はじめに
has_oneで結んだ親テーブルと子テーブルの値を
1つのフォームで同時に保存する方法を解説!
※has_manyの場合はやり方が少し異なります。ご注意ください。

音楽系のアプリを作っていて、
「Youtubeの埋め込みurlを持った子テーブルから
urlを引っ張ってきて投稿の中に表示したい!」と思い、
それを実現すべくネストしたフォームを作る中でかなり苦戦しました…

ネストしたフォームを作りたい方はお役に立てるかもしれません。

###環境
Rails 6.0.3.5
ruby 2.7.2

#モデル

“`ruby:models/post.rb
belongs_to :user
has_one :portfolio, dependent: :destroy
accepts_nested_attributes_for :portfolio
“`

“`ruby:models/portfolio.rb
belongs_to :post
“`
![qiita_image.jpg](https://qiita-image-store.s3.ap-northeas

元記事を表示

【Rails】Capistranoで自動デプロイの時、git stderr: fatal: not a valid object name: master

# エラーの内容
デプロイするため、下記コマンドを実行すると、

“`terminal
$ bundle exec cap production deploy
“`

このようなエラーが出ていました。(抜粋)

“`terminal
# エラーログ
git stdout: Nothing written
git stderr: fatal: not a valid object name: master
“`

# 原因
masterというブランチは存在してなく、デフォルトブランチ名はmainだった。

# 対処方法

config/deploy.rbにて、デプロイするブランチを指定する。
(下記を追記する。)

“`
set :branch, “main”
“`

# 参考
https://laptrinhx.com/rails-capistranoniyoru-zi-dongdepuroide-fa-shengshitaera-fatal-not-a-valid-object-name-master-366419494/

元記事を表示

シェルスクリプトを使用してRubyファイルを実行する

# はじめに
こちらは、自社メンバー宛の記事です。
各トピックに細かい解説は含まれませんので、ご了承ください。
なお、記事作成者は駆け出しなので、
内容の誤りなどがあればご指摘いただけると幸いです。

# 今日やること
本記事では以下について、手順を説明します。
1. Rubyで作成したファイルの起動
2. Rubyファイルを簡単に起動するためのショートカット作成

# 環境
macPCを想定しています。
今回解説するRubyもLinuxコマンドもmacであれば標準搭載されていると思うので、
特に環境構築等は必要ないと思われます。

# Rubyファイルを起動しよう
Rubyファイルを起動するには、大きく3つのステップを踏みます。
1. ターミナルを起動する
2. Rubyファイルが格納されているディレクトリに移動する
3. Rubyファイルを起動する

## 1. ターミナルを起動する
ターミナルは以下のマークです。
![スクリーンショット 2021-02-23 8.55.54.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

フォームオブジェクトを使って1つのフォームから複数のテーブルにデータを保存する

# 記事の目的
1つのフォームから複数のテーブルに一気にデータを保存し、さらにバリデーションも通過させるようにしたい。
通常であれば、フォーム一つに対しテーブルは一つ(紐づくモデルも一つ)であるため、今回のような実装にはフォームが2つ必要になるが、フォームオブジェクトを使って複数のモデルの処理を一つにまとめることができる。

# 現状
モデルは以下のとおり2つ。
こっちは「誰がどの商品を買ったのか」を管理するためのモデル。

“`ruby:app/models/order.rb
class Order < ApplicationRecord belongs_to :user belongs_to :item has_one :shipping end ``` データベースは以下のとおり。 ```ruby class CreateOrders < ActiveRecord::Migration[6.0] def change create_table :orders do |t| t.references :user, null: false,

元記事を表示

Qiita管理システム

## URL

## システム概要
・記事情報を取得し、一覧表示する
・記事の詳細情報を表示する
・記事の投稿が可能

## 使用ツール
・Vue.js(Vuex/Vue Router)
・CSS(Sass)
・XD
・Firebase Hosting
・axios(通信用ライブラリ)
・marked(マークダウン変換用)
・bootstrap-vue

## 使用API
参照元:https://qiita.com/api/v2/docs
##### 記事情報取得API
https://qiita.com/api/v2/users/*username*/items?
##### 記事投稿API
https://qiita.com/api/v2/items?

## メソッド説明
## function説明

元記事を表示

OTHERカテゴリの最新記事