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

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

rails db:rollback後にエラー発生!

##はじめに##

furimaアプリ作成中にカラムを書き忘れて追加しようとした時にエラーが発生しました。

私自身初めてrollbackして追加したのでこのエラーに慣れておらず慌てましたがとても簡単な事でのエラーでした。

##エラー内容##
下記のDBを作成しました

・itemテーブル(出品商品情報)

・buyerテーブル(購入者情報)

・purchase_history(購入履歴情報)

buyerテーブルには誰が購入したか、何を購入したかを保存した方が良いと考え,purchase_history_idをカラムに追加しました。

#README#

## usersテーブル

| Column | Type | Options |
| —————— | —— | ———– |
| nickname | string | null: false |
| email | string | unique: true |
| encrypted_p

元記事を表示

手動デプロイ、コンパイル時 webpack not found

# assets:precompile webpack not found

## 原因
“`
npm install
“`
忘れていた。

npm initでpackage.jsonを作った後その中身をnpm installでインストール

元記事を表示

投稿時刻を日本時刻へ設定する方法

### 投稿時刻の設定をします

configディレクトリに用意されているRailsのapplication.rbファイルに下記を追加します。

“`
module ChatApp
class Application < Rails::Application #中略 config.i18n.default_locale = :ja config.time_zone = 'Tokyo' ``` 続いて、config/localesディレクトリに「ja.yml」というファイルを作成し、以下のような設定を記述します。 ``` ja: time: formats: default: "%Y/%m/%d %H:%M:%S" ``` 時刻の設定は以上です。 ### 時刻を表示させる記述 --- l(エル)メソッドを使用します。 ``` 【例】 <%= l message.created_at %>
“`
lメソッドを使用すると指定した現地時間に対応できます。

元記事を表示

[Rails]CSVダウンロード機能を細部まで理解して実装する(1)

# やりたいこと
Railsアプリで、あるデータをCSVファイルでダウンロードする機能を実装しました。
あまり体系的にまとまったドキュメントに出会えなかったので、自分でまとめます!

### 作業環境
MacBook Pro 13 2020
macOS Catalina 1O.15.7
Rails 6.1.3.1

# 手を動かす前に概論 〜CSV生成の基本的な考え方〜
CSVを作るというのはビューを生成するということに似ています。
むしろビューの一種と考えていいかもしれません?
いつものビュー、index.html.erbを生成するような要領で、`xxx.csv.ruby`という拡張子を使ってindex.csv.rubyというファイルを作ります。

そして、そのファイルにGETでアクセスすればよいです。ブラウザがダウンロードを処理してくれます。

で、ルーティング的にどこにアクセスすればいいのかというと、例えばusers/index.csv.rubyというディレクトリであるならば、`/users.csv`にアクセスすればよいです。もしindex.html.erbも存在していてそれと同

元記事を表示

Argument error undefined method `service_name’

# rails を6.1.3.1にアップグレードした際に恐らく出たであろうエラー

“`
rails active_storage:upgrade
“`

Please run `yarn install –check-files` to update.
とターミナルに表示されたので言われるがままに実行

再度

“`
rails active_storage:upgrade
“`

その後

“`
rails db:migrate
“`

解決!

ローカルでアプリケーションを見ることができるようになりました。

元記事を表示

Railsチュートリアル 第1章 まとめ

#はじめに
Railsチュートリアル(第6版)を通じて、Ruby on Railsの学習を記録することで理解度を高めることを目的としています。
また、これからRailsチュートリアルを学ぶ方向けに、できる限り分かりやすく伝えていきたいと思います。

#第1章
Railsチュートリアルを学習する上での前提知識
**必修科目**
・HTML/CSS
・JavaScript
・Sass
・jQuery
・SQL
・Git
・コマンドライン操作

上記の知識に不安がある方は、Progateで学ぶと学習がよりスムーズになります。
(RailsチュートリアルはProgateと提携していて安心!)
また、Railsチュートリアルはボリュームが多く、難易度が高めなので、ProgateのRubyとRunby on Railsは学んでおくと良いです。

##開発環境
環境構築はローカルで構築する方法もあるが、RailsチュートリアルではAWSのCloud9というIDE(統合開発環境)を使用。

Q:IDEって?
A:IDE(Integrated Development Environment)といい、日本

元記事を表示

[Rails]マイグレーションマスターに俺はなる!

# はじめに
開発している際に、マイグレーションファイルを操作することがあるかと思いますが、操作頻度の割に知識が少ないんじゃ無いかな?と不安になったので調べてみました。
この記事を見れば、かなりRails開発でのマイグレーション操作に強くなるかと思います!

# マイグレーションの概要
マイグレーションは、`データベーススキーマの継続的な変更(英語)を、統一的かつ簡単に行なう`ための手法です。
マイグレーションではRubyのDSLを使っているので、生のSQLを作成する必要がなく、スキーマとスキーマへの変更をデータベースの種類に依存せずに済みます。

1つ1つのマイグレーションは、データベースの新しい’version’とみなすことができます。
スキーマは空の状態から、マイグレーションを実行することで変更を加えていきます。
`ActiveRecordはdb/schema.rbファイルを更新し、データベースの最新の構造と一致`するようにします。

# マイグレーションの作成
マイグレーションを作成するには以下のコマンドを実行します。
マイグレーションファイル名は`YYYYMMDDHHMMSS

元記事を表示

オリジナルアプリ開発【topページの表示】

現在、転職先の企業へのアピールポイントになるポートフォリオ作成(オリジナルアプリ開発)をしています。
私は、タスク管理ツールの完成を目指しています。

今回は、仮topページの表示を行います。

##ルーティングの設定
仮トップページを「http://localhost:3000 」にアクセスしたら表示できるようにルーティングの設定をします。
rootメソッドを使用することで、Railsがルート/とすべき場所を指定できます。

“`ruby:config/routes.rb
root ‘top#index’
“`

###追加したルーティングを確認する
「rails routes」コマンドを実行することで設定しているルーティングを全て表示できます。

“`:ターミナル
rails routes
“`

![オリジナルアプリ【仮topルーティング】.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1210417/b0d6227f-bb09-a04a-4aae-0df495660592.png)

元記事を表示

【rails】gemを使って簡易的なハッシュタグ機能を実装する

#はじめに
act_as_taggrable_onというgemを使って簡易的なハッシュタグ機能を実装しようと思います。
エラーがでたりして複数の記事をみながら実装し時間がかかったので、1つにまとめて見やすいように備忘録としてこの記事を執筆します。

###用意するもの
シンプルな投稿機能は用意しておいてください。
![スクリーンショット 2021-05-16 195605.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820164/ecd287f9-6d8c-bc8f-cfd2-bc5b62daf2eb.jpeg)

###環境
windows10
ruby 2.6.6
rails 6.0

#実装
###1.gemをインストールする
“`Gemfile.
gem ‘acts-as-taggable-on’, ‘~> 7.0’
“`
“`
$ bundle install
“`

###2.テーブルを作成する
“`
$ rails acts_as_taggable_on_engine:inst

元記事を表示

[Ruby]特異メソッドの定義方法には2種類ある!

# はじめに
まずは、特異クラスや特異メソッドとは何か分かるでしょうか??
タイトルにある通り、特異メソッドの定義方法には2種類あり、`特異クラス定義式による方法`と`特異メソッド定義式による方法`があります。
名前はなんとなく分かるけど、使い方が分からないとか、その逆もあることかと思います。
習得すれば、強力な武器になると思うので、ぜひ覚えていってください!

# 特異メソッドとは
特異メソッドとは1つのインスタンス固有のメソッドのことを指します。
特定のインスタンスに特別な性質を持たせたい場面に活躍します。

## 特異メソッドの定義方法

“`ruby
# helloオブジェクトを作成
hello = ‘hello’

# helloオブジェクトにsayメソッドを作成(特異メソッド)
def hello.say(count = 1)
count.times { print self } # ここでのselfは「hello」となる
end

hello.say(2) #=> hellohello
“`

`Object#define_singleton_method`メソッ

元記事を表示

erb でコメントアウトする方法

.erb のファイルを編集するとき<%= %>で囲まれた行が、ctrl + / でコメントアウトされないので調べてみた。

“#”を “<%" と "=" のあいだに入れるだけでした。 ```application.html.erb <%#= debug(params) if Rails.env.development? %>
“`

ほかにも方法があるみたいです。

・Ruby の複数行コメント =begin … =end を使う方法

“`
<% =begin %>

<% =end %>
“`

・if false で囲う方法

“`
<% if false %>

<% end %>
“`

参考
https://ja.stackoverflow.com/questions/43321/html-erb%E3%81%A7%E3%81%AE%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E6%96%B9%E6%B3%95

元記事を表示

redirect_back(fallback_location: root_url)で常にエラーが発生していた話

## 前提

rspecでmod操作をチェックすることができるようになったので、確認ダイアログが表示される操作の統合テストを追加した。(`data: { confirm: “削除してよろしいですか?” }`の部分)

しかしその際に、エラーが発生したので、その修正に軌跡をここに記しておくこととする。

ちなみに、RSpecで確認ダイアログを操作するコードは以下を参考にしました。ありがとうございました!!

https://qiita.com/at-946/items/403d85d45cb02615c323

## 結論
遷移の前のページが削除される操作の場合、`redirect_back`という指示は適切ではない。

### エラーの原因とその修正
テストした箇所と、エラーが発生していた部分、その修正。

“`ruby:app/views/works/show.html.erb
:
<% if current_user?(@work.user) %>

Ruby で解く AtCoder ABC 201 D

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。

# 今回のお題
*[AtCoder Beginner Contest D – Game in Momotetsu World](https://atcoder.jp/contests/abc201/tasks/abc201_d)*
Difficulty: 1317

今回のテーマ、ミニマックス法

本番中に分からなかったのですが、座標の和の奇遇`(x + y) % 2`で先手後手が定まることを利用して解いていきます。
# ユーザ解説
“`user.rb
def dp(x, y)
return @memo[y][x] if @memo[y][x]

if (x + y) % 2 == 0
@memo[y][x] = -10000

元記事を表示

Rails初学者によるRailsチュートリアル学習記録⑨ 第8章

#目次
– [1. はじめに](#1-はじめに)
– [2. 第8章の概要](#2-第8章の概要)
– [3. 学習内容](#3-学習内容)
– [4. 終わりに](#4-終わりに)

#1. はじめに
– この記事は、Rails初学者の工業大学三年生がRailsチュートリアルの学習記録を
つけるための記事です。
– 筆者自体がRailsやWebについて知識が少ないので、内容の解釈などに
間違いがある可能性があります。(その時はコメントで指摘してくださると助かります!)
– Railsチュートリアル内ではRailsの内容以外にも、gitでのバージョン管理やHerokuを使ったデプロイも
学習しますが、gitに関しては既に私が学習済みのため学習記録には記述しません。
– 演習の記録も省略します。

#2. 第7章の概要
前回の章でユーザー登録が可能になったので、この章ではユーザーがログイン・ログアウトを行えるようにします。
ここで実装するログインの仕組みは、ユーザーがログインしているという状態をブラウザが保持し、
ブラウザが閉じられたときにその状態を破棄するという認証シ

元記事を表示

Notion APIライブラリまとめ

## Ruby

https://github.com/katsumata-ryo/notionar

## Laravel

https://github.com/5am-code/laravel-notion-api

## Swift

https://github.com/noppefoxwolf/notion

## JS

https://github.com/makenotion/notion-sdk-js

## go

https://github.com/dstotijn/go-notion

https://github.com/ketion-so/go-notion

## python

https://github.com/Blue-Hope/notion-sdk-py

## vue

https://github.com/64robots/vue-notion-api

## PHP

https://github.com/64robots/php-notion

## React

https://github.com/mkalvas/notion-r

元記事を表示

クラスの定義

クラスを使用して以下の表示結果を出力するコードを記述します。

表示結果

“`rb
ワンワン
わたしは犬です
わたしの名前はポチで種類はトイプードルです
“`

仕様

|クラス変数|値|
|–|–|
|type|犬|

|インスタンス変数|値|
|–|–|
|name|ポチ|
|dog_type|トイプードル|

クラスメソッド

|メソッド名|処理|
|–|–|
|say|ワンワン|

インスタンスメソッド

|メソッド名|処理|
|–|–|
|say_type|”私は{クラス変数type}です”|
|self_introduction|わたしの名前は{インスタンス変数name}で種類は{インスタンス変数dog_type}です|

“`rb:雛形
class Dog
@@type = “犬”

def initialize
@name = “マロン”
@dog_type = “トイプードル”
end

def self.say
puts “ワンワン”
end

d

元記事を表示

Railsポートフォリオ #15 READMEの作成

こんにちは:smiley:

今回はReadmeの作成を行いました。
[(前回記事 #14 カテゴリーソート機能)](https://qiita.com/yanoo/items/6bb1715ae25aa27d3beb)

## ポートフォリオの顔とも言える超重要なReadme

今回はポートフォリオにおいて最も重要なものの一つであるReadmeの作成に取り組みました。

Readmeとアプリの最初の画面がポートフォリオにおいて最も大切、もはやそこだけで判断される、なんていう話は皆さんもご存知だと思います。

私が作っているアプリが業務改善系ということもあり、多くの方が作られるSNS系のアプリに比べると使い方がなかなか伝わりにくいので、Readmeでの説明には特に力を入れようと考えていました。

まずは先人たちのものを見せてもらい、何を書けばいいのかを把握するところから始めました。

## 作成時意識したこと
+ 最初にわかりやすい概要を書くことで、そこだけしかみてもらえない場合にも雰囲気を掴んでもらえるようにすること
+ 画像も上の方に一枚貼ることで、少しのスクロールでも目に入るよう

元記事を表示

Rubyで解くAtCoder ABC 201 (C問題 Rubyでは最短実行時間)

# C – Secret Number

https://atcoder.jp/contests/abc201/tasks/abc201_c

# 問題内容

0000~9999までの4桁の暗証番号について,どの文字が使われていたかを10文字の文字列で与えられるので,ありえるパターンの数を答える問題
例えば`o?xx?oxoxx`でが与えられれば,左から順に 0,1,2..9 と見ていって,

– o : 確実に1回以上使われる( 0,5,7 は 1~4 個)
– ? : 使われたかもしれない( 1,4 は 0~4 個)
– x : 使われない( 2,3,6,8,9 は 0 個)

この条件でありえる暗証番号のパターン数は84通りなので,84を出力すればよいです。

# 本番で提出したコード

“`ruby:ABC201_C.rb
str = gets.chomp.split(”)
o = 0
q = 0

10.times do |i|
o += 1 if str[i] == ‘o’
q += 1 if str[i] == ‘?’
end

if o >= 5

元記事を表示

Ruby初心者(私)がやった構文ミス

# はじめに
はじめまして、Rubyにてプログラミング学習をはじめたkat_logと申します。
学習の中でやった間違いをご紹介いたします?

# 一覧
## 数値指定が必要なのに文字列で指定した
##### ミス

“`
print_info(“USBメモリ”, “1200”)
“`

#####正解

“`
print_info(“USBメモリ”, 1200)
“`

初心者にありがちなミスですかね…

## if文のelseに条件式を記載した
別の条件で分岐させる時は`elsif`が正しいのですが`else`としていたため意図しない結果が出てきました。
##### ミス

“`ruby:total.rb
total = 50

if total >= 200
#25円引き
total -= 25
else total >= 100
#10円引き
total -= 10
end

puts total # => 40
“`

100円以上の時に10円引きしたいのに、100円より小さい値でも10円引きされてしまいました。
#####正解

`

元記事を表示

Capistrano取扱説明書

# Capistranoとは
Rubyで記述されたDSLを用いて複数のリモート環境を操作するためのツールで、主にデプロイツールとして利用します。
コマンドを実行して、リモートのサーバーに最新のアプリケーションをデプロイし、サーバーを再起動する、といったことが可能です。

## インストール
gemパッケージとして提供されているので、`gem install`コマンドでインストールすることが出来ます。

“`ruby
$ gem install capistrano
.
.
.
1 gem installed
“`

## 必要ファイルの生成
`capify`コマンドを実行することで、デプロイに必要なファイルを生成することが出来ます。

“`ruby
$ capify . #=> 「Capfile」と「config/deploy.rb」が生成される
“`

<Capfile>
Capistrano本体である`cap`コマンド実行時に、タスクが記述されたファイルを読み込むために利用される。

<config/deploy.rb>
どういったサーバーにどうやってデプロイするか、といっ

元記事を表示

OTHERカテゴリの最新記事