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

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

rspec-railsで使うコマンドを羅列する

使うコマンドを雑多にメモる。

# 導入

“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’, ‘~> 3.6.0’
gem ‘factory_bot_rails’
end
“`

“`ruby:spec/support/factory_bot.rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
“`

“`terminal
$ rails g rspec:install
…..
“`

元記事を表示

gemとbundlerまとめ

##まえおき
PJで運用保守にあたる中でgemのメモリ効率改善アップデートを取り入れたく

元記事を表示

Vultr VPSにCentOS8+MySQL8+nginxをインストール

# はじめに
[CentOS7での記事](https://qiita.com/NYC-Blue/items/79621264072685d3e009)の後、CentOS8も試したので、書き留めておきます。

Vultrの一番安い10GB SSDプランだとCentOS8ではディスクが足りなくなるので25G以上をお勧めします。以下の手順はRubyだけ古いバージョンですが、これはローカルのアプリが ruby 2.5.3 で動いているためです。2.7でも手順は同じでOKと思います。(未検証)

激安VPSの[Vultr](https://www.vultr.com/?ref=8493145-6G)で[紹介者からのリンク](https://www.vultr.com/?ref=8493145-6G)経由でアカウント登録すると$100のクレジットをもらえるので、CentOS7, 8, MySQL 5.7, 8などの組み合わせをいろいろ試しました。このキャンペーンはいつ終わるか分からないので、興味のある方は以下のリンクからアカウント登録してください。あなたはクレジットをもらえるし、私にも多少のクレジ

元記事を表示

Ruby, Rails たまに使うけどすぐ忘れるやつ

RailsとかRubyの過去に学んだものを適当に残しておく(最近はRailsもRubyも触ってない・・)
思い出したら随時追加する。

# rakeタスクをrails consoleから実行する

“`ruby
require ‘rake’
Rails.application.load_tasks
Rake::Task[‘hoge:huga’].execute
# 引数つけて実行
Rake::Task[“hoge:huga”].execute({ hogege: ‘hugaga’ })
“`

# bundle でバージョン指定してインストール

“`bash
# bundle installするときはGemfile.lockのバージョンを確認してから実行
bundle _1.16.1_ install
“`

# rakeタスク内のメソッドはObjectクラス直下に作られちゃう

https://blog.freedom-man.com/rake-definemethod-namespace

namespace配下にメソッド書いていると思っていてもObjectクラス以下に

元記事を表示

AtCoderの入力例を一度に試すための1行(Ruby)

AtCoder等のプログラミング問題を解く際、提出前に手元の環境で動作確認すると思う。私の場合は便利な環境を用意できていなく[^env]、代わりに [paiza.io](https://paiza.io/) を利用している[^ver]。

問題には入出力の例が複数与えられているのでなるべく全て試したいが、**入力例をいちいち変えるのが辛い**。自分で例を追加する場合は尚更である。

> 環境を整えてさえいれば、テストの自動生成なども可能なようだが…
>
> [RubyでAtcoderからテストを自動生成するライブラリを作りました – Qiita](/QWYNG/items/0e2e6b72bd1969d0d751)

何とかならないか考えた結果、Rubyにおいて1行で解決する方法を思いついた。

[^env]: 電車の中からタブレットで参加することもあった
[^ver]: 言語のバージョンを合わせられないのでお勧めはしない

## 方法
Rubyスクリプトの最後に以下の1行を追加する。解答のメソッド化などは必要ない。

“`ruby
load __FILE__ unless $std

元記事を表示

マイクロポストにタグ付けする

#はじめに
ご訪問いただきありがとうございます。レベル的にはrailsチュートリアルを終えたくらいのレベルです。もし間違えているところ等あればアドバイスいただけると幸いです。

###作るもの
今回はマイクロポストに自由にタグ付けと編集の機能を追加します。
(題材は自分のポートフォリオサイトです。尚、すでにUserテーブルとMicropostテーブルは作成済みです。)

###対象読者
railsチュートリアルに機能を追加したい等自分と同じ位のレベルの人を対象としています。

#作成の流れ
1.TagモデルとTag_relationshipモデルの作成
2.モデルの関連付けとバリテーション
3.対応するビューの作成
4.コントローラーのアクション作成
5.タグ編集機能の作成

#1.TagモデルとTag_relationshipモデルの作成
今回はタグ付機能を作ります。マイクロポストから見ると一つのポストに一つ以上のタグをつけることができる。タグから見ると一つのタグは一つ以上のマイクロポストに関連づくということになります。つまり多対多の関連付けとなり、MicropostもでるとTagモ

元記事を表示

【Rails6・楽天API】商品検索機能の実装手順

#はじめに
Railsで楽天APIを使用して商品(本)の検索、商品情報の取得・表示をする方法をまとめました。
今回は、本を題名で検索し、ヒットした本の情報を一覧にして下に表示する形です。

#バージョン
・Ruby 2.7.0
・Rails 6.0.2.1

#実装手順

##アプリケーションIDの取得
楽天API情報を使用するには、[Rakuten Developers](https://webservice.rakuten.co.jp)より
「新規アプリ登録」を行いアプリケーションIDを取得する必要があります。
簡単な情報を入力してすぐに取得することができます。
AmazonAPIは申請を行い審査を受ける(落ちることも多いようです)ので、この点が違いますね。

##gemをインストール
[Ruby SDK(公式)](https://webservice.rakuten.co.jp/sdk/ruby.html)に従って進めます。
Gemfileに下記追記して、`bundle`でインストール。

“`ruby:Gemfile
gem ‘rakuten_web_service’

元記事を表示

ruby-dnnとディープラーニングでリンゴをオレンジに変換してみた(Cycle-GAN)

# はじめに
今回はruby-dnnでCycle-GANを動かしてリンゴをオレンジに変換してみたいと思います。
RubyとCPUでCycle-GANという時点でもう無理ゲー感半端ないです?

コード全文は[https://github.com/unagiootoro/apple2orange-cyclegan](https://github.com/unagiootoro/apple2orange-cyclegan)にあります。

# 使用ライブラリ/バージョンなど
Ruby … v2.6.5
ruby-dnn … v1.1.4
Numo::NArray … v0.9.1.5
Numo::Linalg … v0.1.4
rubyzip … v2.2.0

# Cycle-GANざっくり解説
Cycle-GANとは、二つのドメインの異なる画像間でそれぞれ相互に変換ができるようにするモデルです。
画像の変換というと、[前回やったPix2pix](https://qiita.com/unagiootoro8388/items/63c5edff8f2861e90845)も画

元記事を表示

【1日目】初学者の今日の学び ストロングパラメータ, fontawesomeについて

【1日目】プログラミング初学者の今日の学び
プログラミング初学者が、ポートフォリオを作っている中で得た気づきを書いていきます。

# Fontawesomeをhtml.erbのループ内で使う

Microposts一覧表示ページにおいて、各micropostを削除するボタンを、Fontawesomeのゴミ箱アイコンで表現したかった。
埋め込みrubyの繰り返し内でhtmlタグを使いたい時は、ブロックを受け渡せば良いらしい。

“`ruby:app/views/microposts/_micropost.html.erb
<% @microposts.each do |micropost| %>

<%= link_to micropost.name, "#" %>
<%= link_to micropost_path(micropost), :method => :delete do %>

<% end %>

<% end %>
“`

元記事を表示

Progate無料版をやってみる【Ruby on Rails5 I】

[前回](https://qiita.com/GodPhwng/items/00f6f99ea688fa098395)に引き続き無料レッスンをこなしていきたいと思います。

Rubyとどう違うのか?
→Rubyのフレームワークのことを指す、またはRubyのフレームワークを使って開発することだと思います。
→Webアプリケーション開発のためのフレームワークらしいです。
[Ruby on Railsとフレームワーク](https://prog-8.com/rails5/study/1/1#/1)

Ruby on Railsの全レッスンをクリアすると「TweetApp」というTwitterに似せたWebアプリを作れるらしいです。
ちょっと興味あるので、課金しようかな・・・。

というか経験者の場合、課金しないとどのレッスンも有益な知識は得られないかもですね・・・。
無料だから仕方ないですね!

#Ruby on Rails5 I
[公式レッスン](https://prog-8.com/rails5/study/1/1#/0)

###Ruby on Railsを始めよう
・まずRailsを

元記事を表示

rbenvでプロダクト毎にrubyのバージョン管理をする

# rbenv
rubyをプロダクト毎にバージョンを管理する必要性は以下の2つにあると考えています。

– ローカルを汚さない
– 複数のプロダクトを落とす毎に毎度毎度バージョンを切り替えるのは大変

gemsetを併用して使うと尚、いいと推測します。下記のリンクはrbenv-gemsetの使い方です。
[rbenv-gemsetを使ってプロジェクト毎のgemを管理する
](https://qiita.com/Nedward/items/95af1d5da4171879878b)

## rbenvをbrewでインストールする

“`
$ brew installl rbenv
“`

## rbenvの基本コマンド群

“`
インストールできるrubyのパッケージを確認
$ rbenv install -l

インストールしてあるrubyのバージョンを管理できる
$ rbenv versions

rbenvの初期化
$ rbenv init

rubyをインストールする
$ rbenv install バージョン

インストールしたrubyのバージョンを反映させる
$ rbe

元記事を表示

Rails~パスワードの取り扱いについて~

#パスワードの取り扱い
パスワード機能がついているSNSアプリやサービスにはデータベースにパスワードが保存されている。このままだとPCを覗き見されたりハッキングでデータを盗まれた場合そのパスワードを使って他人のアカウントに不正にログインできてしまう。そのため万が一パスワードを覗き見されたりデータを盗まれてもパスワードの内容がわからない状態を目標とする。
#gemファイルを使用しパスワードを暗号化する。
##gemとは
gemとはRubyやRailsでプログラミングをする際に「よく使う機能」をパッケージ化したもの。「検索機能を作るgem」や「暗号化するためのgem」など様々なgemが存在し、Railsにインストールすることで使用することができる。
今回使用するgem= bcrypt(暗号化)するためのgem

#gemfiles
Railsにはインストールしたいgemを記述するGemfileというファイルが存在する。
「gem ‘rails’,’5.0.3’」等と記載する。「rails new」コマンドで生成されたgemfileにはすでにいくつかのgemが書かれてインストールされている。

元記事を表示

Rails ~いいね機能を作る~

#テーブルの作成
モデルとマイグレーションファイルの作成を準備する。今回作成するテーブルにはuser_idとpost_idの2つのデータをもたせるように処理を行う。
STEP1 マイグレーションファイルを作成
STEP2 マイグレーションファイルの内容をデータベースに反映させる
#ターミナル
“`
マイグレーションファイルの作成
rails g model Like user_id:integer post_id:integer
データベースに変更を反映。データ名:integerでデータ作成
rails db:migrate

“`
#バリデーションの追加
“`
class LIKE like=Like.new(user_id:1,post_id:2)
IDが

元記事を表示

初心者向け、メソッドの用語まとめ(Ruby)

# はじめに
– 本記事はRubyでプログラミングを初めてメソッドでいろんな用語が出てきて混乱しているという方が調べる際のヒントになればいいなと思い書きました。
– まずい表現や間違ったことが書いてある場合はコメント等で教えていただけると幸いです。

メソッドってなんだ?
引数、仮引数ってなんだ?
戻り値ってなんだ?、、、
となった人向けに書きました。

私はなりました。

メソッドがプログラミングを始めて、初めのつまづきポイントなのではないかなと思っています。

# メソッドのおさらい
まずメソッドのおさらいです。
実際のコードを見てみましょう。
例として、税込価格を計算して返してくれるメソッドを書いてみました。

“`ruby
####################メソッドを定義############################
#税込価格を計算するメソッドを定義
def calculate_tax_included_price(price)
#税込価格 tax_included_priceを変数定義
#税込価格の計算結果を代入
tax_included_p

元記事を表示

RuboCopのAbcSizeチェックの対応

Rubyの静的コード解析をやってくれるRuboCopをRails開発に導入しました。そこで発生したAbcSizeチェックについての作業メモ。

## AbcSizeとは
実装したメソッドに対してRuboCop君が計算してくれるスコア。
以下の3つのカウントが評価対象。

– Assignment : 代入
– Branch : メソッド呼び出し
– Condition : 条件

デフォルトで15を超えると警告が出て、もっとスコア下げてねと言われる。

## 警告が出たメソッド
ユーザーのサインイン機能を担う、こちらの`SessionsController.create`。

“`sessions_controller.rb
def create
@user = User.find_by(email: params[:session][:email].downcase)
if @user&.authenticate(params[:session][:password])
# ユーザーログイン後にユーザ情報のページにリダイレクトする
log_in @user

元記事を表示

【今日のエラー】クラスとインスタンス

railsの勉強の際、あまりにもインスタンスの理解が浅かったのでRubyの復習をしてきました。

#クラスとインスタンス
簡単にまとめると、クラスという設計図をまず作ることによってその設計図からいくらでもインスタンスを生成することができる。

イメージとしては設計図から大量の実物が生成されるイメージ。
例えば

“`ruby_test.rb
class Tanaka
attr_accessor :name, :age

def initialize
self.name = ‘田中’
self.age = 10
end

def introduce(personal_name)
puts “#{self.name}が#{personal_name}を紹介して#{self.age}歳という年齢を教えた”
end
end

tanaka_A = Tanaka.new

tanaka_A.introduce(‘佐藤’)

p tanaka_A
“`

**結果**
`田中が佐藤を紹介して10歳という年齢を教えた`

日本語的には非常に怪しいですが笑

元記事を表示

Rails勉強中 EC_siteカート機能 同一商品追加時のcreate

# はじめに
現在Rails勉強中の人が備忘録として書いてます。
こうした方がいい、あーした方がいいといった点があれば教えてください

# コード
スクリーンショット 2020-03-15 14.03.33.png

# 内容
viewは比較的スムーズに実装できると思うので割愛
コード見れば分かると思うが、自身が誤っていないかの確認

始めに、isExistとIdのデフォルト値の定義
each end内で追加した商品IDとカートに追加されている商品IDが同じかif文で記す
if isExistではeach内の変数を持っていけないので、前に定義したIDを持ってくる

sumで新たに追加したい値と既にカートに保存されている値を計算
updateするのは追加する商品の個数だけなので(ここではcount)、
updat

元記事を表示

FullCalendarをRailsに導入

#FullCalendarについて
カレンダー機能付きのアプリを作りたく調べてみました。
こんな感じのが出来ます。
![UNADJUSTEDNONRAW_thumb_9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510412/8117c92b-c245-ff5f-e6ce-1ffcdca7c253.jpeg)

FullCalendarはjQueryのプラグインでrailsに導入する際は、gemで導入しました。
今回はScaffoldを使って簡単なEventモデルを作り、カレンダーに反映出来るところまでやります。

では、
#1.Gemの追加

“`Gemfile.
gem ‘jquery-rails’, ‘4.3.3’
gem ‘fullcalendar-rails’
gem ‘momentjs-rails’
“`
そして、
`bundle install`
#2.application.jsに記述
“`app/assets/javascript/application.js
//= req

元記事を表示

Your Ruby version is 2.6.3, but your Gemfile specified 2.5.3の対処法

### 状況
ローカル開発環境でbundle installを実行しようとしたら以下のようなエラーが出ました。

“`php:terminal
Your Ruby version is 2.6.3, but your Gemfile specified 2.5.3
“`

どうやら、開発環境で使われているrubyのバージョンと、Gemfileで指定しているrubyのバージョンが違うようです。

### 対処法

“`php:terminal
$ source ~/.bash_profile
“`

このコマンドを実行すると、

“`
ruby -v
ruby 2.5.3p105
“`

rubyのバージョンが切り替わりました。

rubyのバージョンを切り替えた後に、bundle installを実行すると、うまく通りました。

### 最後に
開発中に、いつの間にかrubyのバージョンが切り替わっていて、原因がわからないのですが、また何かわかったら記事にまとめます。

元記事を表示

AWS EC2デプロイで困ったときに見たところ

### はじめに
AWS EC2を使って自分のアプリケーションをデプロイするときに、非常に苦労をしたので、対処法をメモしておきます。

### 対処法

自分のアプリのディレクトリ直下に移動をしてから、logを出力します。

“`php:terminal
$ cd ~/var/www/rails/myapp # 自分のアプリがあるディレクトリに移動
$ cat /log/unicorn.log # logを出力
“`

デプロイがうまくいかないときに、logファイルの中身を見るとエラーログが出ている時があるので、そのエラーログを見て対処していきましょう。

元記事を表示

OTHERカテゴリの最新記事