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

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

deviseの導入の仕方

##手順

1. Gemfileに最下部に`gem ‘devise’`と記述する
2. `bundle install`する
3. `rails g devise:install`する
4. モデルを作成するために`rails g devise user`を実行する
5. ビューファイルを設置するために`rails g devise:views`を実行する

2~5はターミナルで操作します。

元記事を表示

【Rails devise】deviseの導入と追加するカラムの許可

## devise導入の手順

##### Gemfileで`gem ‘devise’`と追加し、`bundle install`としてdeviseのgemを導入

##### まだdeviseが使えない状態なので、ターミナルでインストールする
“`
$ rails g devise:install
“`

##### userモデルの生成

$ rails g devise user

##### ビュー画面のカスタマイズをする場合

“`
$ rails g devise:views
“`

##### controllerを使ってカスタマイズしたい場合
usersコントローラーの作成

“`
$ rails generate devise:controllers users
“`

 
## deviseの便利なメソッド
#### ログインの有無
`user_signed_in?`
#### ログイン中のユーザー
`current_user`
#### ログインユーザーのみ許可するメソッド

“`ruby
be

元記事を表示

ExcelScanチュートリアル

# ExcelScanとは
ExcelScan ( https://github.com/miura1729/excelscan )は、RubyからExcelを簡単に使うためのライブラリです。出来ることや効率を犠牲にすることで、お手軽さを得ています。ExcelScanは基本的にExcelのシートの上から下へ行をスキャンする形で処理を書くためにこう名付けました。
このチュートリアルでは、いくつかの例を元に使い方の概要を説明したいと思います。

# 材料の集計
あなたは水道屋さんだとします。現場で使った材料とその量を日報に書き込んで行って、毎日家で集計しないといけません。日報の内容はこんな感じでExcelに入力されるでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/31888/9da983f7-f169-39eb-57e6-d8f34165fddc.png)
これを集計しようと思います。ピボットテーブルとか駆使すれば簡単かもしれませんが、年寄りにはなかなか覚えられません。そこで、Ex

元記事を表示

Ruby で解く AtCoder ARC109 B 二分探索

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

# 今回のお題
*[AtCoder Regular Contest B – log](https://atcoder.jp/contests/arc109/tasks/arc109_b)*
Difficulty: 524

今回のテーマ、二分探索

入力例 1の説明で AtCoder らしい`ミスリード`がありますが、n + 1 の長さの丸太で 1 ~ k までの短い丸太をつくればヨシ!
# Ruby
“`ruby.rb
n = gets.to_i
m = (1..).bsearch { _1 * (_1.next) / 2 > n.next } – 1
puts n – m + 1
“`
“`bsearch.rb
m = (1..).bsearc

元記事を表示

Slack API の始め方をまとめました

# Slack API の始め方をまとめました
## 目次
– SlackにAppを登録
– Slack App を作成
– Slack API を利用してメッセージを投稿する。

※ rubyを使用します

## SlackにAppを登録
ブラウザで次のページよりSlack APIにログインする。
https://slack.com/signin

### 開発用のワークスペースを作成

ログインを終えたら次のページより開発テスト用のワークスペースを作成する.
![create_workspace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366451/b6b67064-0f74-7f4d-288a-549e30587b1f.png)
まずは、`+ Create a New Workspace` をクリック。

![workspace_setup_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/366451/12

元記事を表示

【Ruby】変数展開(数値と文字列の連結)【超基礎】

変数展開について

数値と文字列を連結するには、変数展開を用いる。

“`
age = 26
puts “私は” + age + “歳です”
“`
と入力すると、エラーになる。
正常に動作させるためには、

“`
age = 26
puts “私は#{age}歳です”
“`
と入力すると正常に動作する。

元記事を表示

【Ruby】なぜ変数を使うのか【超基礎】

なぜ変数を使うのか

・繰り返し、同じ要素を使うことができる。
 → 楽にコードを書ける
・変更があった場合に対応しやすい。
 → 代入する値を変えればすべてを変更できる。
・何の要素かわかりやすい。

変数の使い方

name = “ふみあき”
→ nameにふみあきという文字列を代入

元記事を表示

RSpecを実行すると、 Lock wait timeout exceeded; try restarting transaction mysqlというエラーがでる

ある日、RSpecのテストの実行中に、Ctrl+Cでキャンセルし、再びテストを走らせた。すると、いつまでたっても処理が止まったままだったのでそのまま放置していたら以下のようなエラーが出ました。

“`
Lock wait timeout exceeded; try restarting transaction mysql
“`

# なぜこうなったのか
おそらく、MySQLのトランザクション(システムスペックは自動でテストデータのトランザクション処理をしてくれる)がコミットされる前にCtrl+Cでキャンセルしてしまったからだと思いますが、はっきりした原因は不明です(超ピンポイントでCtrl+Cを押してしまったため発生した?)

# 解決策
①mysqlに“`mysql -u root -p“` でログインする。
②“`SHOW ENGINE INNODB STATUS“`を実行し、**TRANSACTIONS**の部分を確認する。

“`
TRANSACTIONS
————
Trx id counter 60949
Purge done for trx’s

元記事を表示

Railsで、現在時刻・日時を表示させる方法

#はじめに
 Rubyでは標準ライブラリなど、様々なものがあるが、その中で、日付についてのものがあり、現在制作中のアプリに日付を表示させようと思い、ここにいたる。

##Rubyでは…

“`ruby
require ‘date’
“`
を記述することで、そのライブラリを使用できる。

##Railsでは…
 調べが足りないので、定かではないが、デフォルトで使用できるみたい。私は、上記の記述を書いた覚えがないが、日時を表示できた。

###現在の時刻

“`ruby
Time.now
#=>2020-11-28 23:33:32 +0900
“`

###今日の日付
“`ruby
Date.today
#=>2020-11-28
“`

##最後に
 どこの記述されているのか、わからないが使える機能がたくさん出てきた。Railsは便利だが、ブラックボックスな部分が私にはまだまだあり、難しい。開いたことのないファイルがたくさんある…
 表示方法を変えたいなぁ…`ja.yml`あたりをいじればいいのかなぁ…

元記事を表示

非ツイッター民が黒い画面からツイートしてみた件について

技術ブログに記載

非ツイッター民が黒い画面からツイートしてみた件について

元記事を表示

ルーティング設定

## ルートへのルーティング設定とは
Vagrant環境では、**http://localhost:3000**
にアクセスした時に、デフォルトで表示される「Welcome aboard」のページではなく、自分で作ったページなり、アクションなりを表示させたい時にする設定のこと。
### コントローラーとアクションを作る
ターミナルに下記のコードをうちます。

“`
$ rails g controller コントローラー名 アクション名
“`
### ルートファイルを編集する
「config/routes.rb」ファイルに下記のコードを書き込む。

“`
root to: ‘コントローラ名#アクション名’
“`
例えば、http://localhost:3000/にアクセスした時にindexページを表示させたい場合は、

“`
root to: ‘コントローラ名#index’
“`
と書く。
## 出典記事
[http://localhost:3000/に特定のページを表示させたい(ルートへのルーティング設定)](https://qiita.com/higu1988/it

元記事を表示

ruby on railの環境をcentos7.2で構築

# vagrant boxを利用してcentosの仮想環境を構築する
“`
>vagrant box add 名前 urlもしくはローカルパス
“`
※OSのボックスURLの一覧サイト
http://www.vagrantbox.es/
centos7.2:https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

“`
>vagrant init 名前
“`
vagrant起動確認

“`
>vagrant up
“`
もし、

“`
mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
“`
というエラーが出たら、

“`
>vagrant plugin install vagrant-vbguest
“`
vagrant停止

“`
>vagrant halt
“`
生成されたVagrantfileに下記を加える

“`
config.vm.network “

元記事を表示

【Rails】NewsAPIを使ってクリスマスニュースを収集するアプリを作る

# はじめに
![chrisapp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/695959/c330e92f-7717-878f-3aa1-984aa341ec50.png)
(初投稿です)
Railsでクリスマスに関連するニュースを集めるごくシンプルなアプリを作ります。

NewsAPIのキーを取得し、英語の公式ドキュメントを参照してみたものの、Ruby client libraryのサンプルコードの使い方が自分にはいまいち分からず、あれこれ調べた結果自分に合った方法を見つけたので記事を書いてみました。

環境

* Ruby 2.6.5
* Rails 6.0.3.4

# NewsAPIとは
https://newsapi.org/

世界中のニュースソースからデータを集めて提供してくれるAPI。
3種類のエンドポイントURIが用意されており、

リクエストパラメータ内で欲しいニュースの国とカテゴリーを指定すると最新のニュースデータを返してくれる「Top headlines」“`/v2/to

元記事を表示

[rails]突然自動デプロイが反映されなくなった

#何が起きたのか

よくわかりませんが、調べたところEC2に問題があった
自動デプロイしてたら突然変更が反映されなくなった

#解決方法

よくわかりませんが突如起こった出来事ですので
とりあえずAWSのマネジメントコンソールにログインしてEC2インスタンスを再起動
再起動後は以下のコマンドでNginxとdbを起動。

“`
$ sudo service nginx start 
$ sudo systemctl restart mariadb

“`

その後 自動デプロイする 完 (勝手にunicornは起動されるであろう )

“`
bundle exec cap production deploy
“`

#補足
###EC2に問題がある場合の確認すべきところ

基本的に以下のどれかがどうにかこうにかなっていることが多い説
( unicorn,db,nginx…)

なのでエラーログみてもよくわからなかったらコマンドでいろいろ確認してみよう

“`
データーベースの状態を確認
sudo systemctl status mariadb
“`

元記事を表示

タグ振り分け機能の実装

# はじめに

今回は、zipang(漢字、ひらがな、カタカナをローマ字に変換するもの)というgemを用いてタグを頭文字ごとに0~9、A~Zに振り分けて索引のようなものになるよう実装いたしました。その際、予め ancestry を用いて親カテゴリーとして0~9、A~Zをデータに保存するseedを作成しております。
スクリーンショット 2020-06-24 20.57.21.png

# 機能の実行順序

大まかな流れといたしましては、

#### ① タグを入力する

#### ② 入力されたタグをzipangでローマ字に変換
#### ③ 変換した文字の頭文字を取得し、その頭文字を親としてタグをその子要素に保存する。(タグのテーブルにはancestryを用いているので、知らない方は検索してみてください)
####

元記事を表示

Rubyで2進数を計算する方法はとても簡単

ruby 2.7.0の記事です

# 10進数を2進数に変換する方法
以下、私の試行錯誤の結果です

– 演算子については、公式リファレンスを参照
– ** で二乗
公式ドキュメント(Numericクラス)

“`ruby
def Binary(num)
arry1 = [] #1になる桁を左から数えた数が入ります 44の場合(6,4,3) つまり(101100)
while num > 0
arry2 = [] #2で割った数が入ります
n_i = num
while n_i > 0
n_i = n_i / 2
arry2 << n_i end num = num - (2 ** (arry2.length - 1)) #arry2.lengthで桁を出します 10進数に戻して、最初の数から引きます arry1 << arry2.length #1に

元記事を表示

【Index】マルチスケールシミュレーション特論

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

# Introduction

マルチスケールシミュレーション特論の講義メモです.Rubyの講義メモを中心に,その他備忘録などを投稿していきます.

間違えている部分があれば修正・加筆するのでコメントいただけると幸いです.

# Class\_Assignments

– To Do [2/4]
– [X] **qiita link**: 学習メモへのlinkがqiitaにある
– [ ] **roman numerals, google recruit or both**: どちらかあるいはどちらもが解けている
– [X] **qiita public**: 学習メモがpublicになっていて,LGTMを

元記事を表示

Railsの機能をcronから実行する

この記事は、Railsの機能をcronから実行する方法について解説しています。

Railsの機能をcronから実行する方法はいくつかありますが、単純に実装してしまうと、サーバーのリソースを無駄に消費し、実行完了までとても時間のかかるものになってしまいます。

ある程度アクセスのあるサービスを運営している場合は、上記のリソースの無駄使いを防ぐために、Railsの機能をcronから実行するときに少し工夫が必要になります。

最終的な完成形は、「バックグラウンドジョブとして実装し、起動しているRailsサーバーからジョブをキューイングする」というものになります。順を追って解説していきます。

## 既存の方法の何が問題なのか

既存のよくある方法は、cronからRailsサーバーを起動するものがほとんどです。この方法だと、Railsサーバーの起動に10秒ほど時間がかかります。時間だけでなく、100MBほどのメモリが消費されます。規模が大きい場合はもっとたくさんの時間とメモリが必要になります。

cronから毎分実行する場合は、このリソースの無駄使いを避けたいところです。cronから呼

元記事を表示

ActiveRecordでデータを月毎に集計

# [ActiveRecord]でデータを月毎に集計する方法

今回は入力した数値を月毎に集計して合計値を出力させる方法を投稿します。
ネットで検索しても、なかなか良い方法がなかったので、参考になればと思います。

使用テーブル(incomesテーブル)↓↓↓
![スクリーンショット 2020-11-28 14.03.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/875779/39a01ec9-c7a1-7e47-b5a6-841b687fec82.png)
このテーブルから2019年-月分・・・2020年-月分としたいと思います。
実行コード↓↓↓

“`ruby
Income.group(“YEAR(fill_date)”).group(“MONTH(fill_date)”).sum(:price)
“`
YEAR(fill_date)で年毎にグルーピングして、さらにMONTH(fill_date)で月毎にグルーピングした後、sum(:カラム名)でpriceを合計しています。
このときのタ

元記事を表示

FFmpegをAWS Lambdaで動かす

ffmpegをAWS Lambdaで動かしてみました
何を思ったかRubyのラッパー使ってみました
途中結構躓くことが多かったので面倒でした

# Dockerfile

“`dockerfile:Dockerfile
FROM lambci/lambda:build-ruby2.7

RUN gem install bundler -p

WORKDIR /var/task
RUN export TASK=/var/task

RUN mkdir ffmpeg_sources
RUN mkdir ffmpeg_dist
RUN mkdir bin

RUN yum install autoconf automake bzip2 bzip2-devel cmake freetype-devel gcc gcc-c++ git libtool make pkgconfig zlib-devel -y
RUN yum install -y libpng-devel

WORKDIR /var/task/ffmpeg_sources
RUN curl -O -L https://www.n

元記事を表示

OTHERカテゴリの最新記事