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

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

Ruby と Perl と Java と Python で解く AtCoder ABC 047 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 047 C – 一次元リバーシ](https://atcoder.jp/contests/abc047/tasks/arc063_a)*
Difficulty: 650

今回のテーマ、正規表現
# Ruby
例えば、`WWWWBBWBBB` を W B でそれぞれまとめますと `WBWB` となり、3回で一色にできることが分かります。
こういう文字列の処理は正規表現を使用すると簡単に解けます。
*[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f58

元記事を表示

resource resourcesって何が違うの??

## Railsルーターの目的
そもそもルーティングは何をしてるんや。という話。
Railsのルーターは受け取ったURLを認識し、適切なコントローラ内アクションやRackアプリケーションに割り当てます。ルーターは、ビューでこれらのパスやURLを直接ハードコードすることを避けるためにパスやURLを生成することもできます。

つまり受け取ったURLを捌いて指示を出す、司令塔ですよってこと。

## resources と resource の違い
①URLにidを必要とするかしないのか
②resourceの場合単数なので、一覧みたいな概念はなく、indexが作られない

## resources 複数
リソースをいくつも定義しなければならない場合は、以下のように簡単にわかりやすくできる。get,new,create,edit,update,destroy,showがresourcesでまとめられる!(only、exceptで限定することも可能)

resources :photos, :books, :videos
上の記法は以下と完全に同一です。

resources

元記事を表示

【Favorite】Rails いいね機能 実装

![画面収録 2020-04-30 0.34.38.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/1a76630c-5733-87a0-7e95-1cb7e3a96974.gif)

#【ゴール】
ユーザーに投稿に対していいね機能を実装する
いいねを押すとハートが赤くなる

参考:https://qiita.com/nojinoji/items/2c66499848d882c31ffa

#【メリット】
UI、UXの向上
アソシエーションの理解度向上

#【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

#【実装】 ”user” “post”機能実装は割愛

1. favorite model作成

“`mac.terminal
$ rails g model Favorite
“`

2. アソシエーション 追記

※ user : favorite

元記事を表示

他人の書いたコードをミニアプリにして魔改造した話。(複数画像投稿・編集)

#はじめに
とある事情により[こちら](https://qiita.com/gakinchoy7/items/ac1d8e64e33c3ddd377b)の記事に大変お世話になったのですが、色々気になるところがあり、
手直しをしていった結果、不具合の修正やリファクタリングができたため記事にまとめてみました。

#動作環境
ruby 2.5.1
rails 5.2.4.2
carrierwave 2.1.0
mini_magick 4.9.5
jquery-rails 4.3.5

#下準備
動作の確認をするためにミニアプリを作りました。
[元記事](https://qiita.com/gakinchoy7/items/ac1d8e64e33c3ddd377b)には省略されていたので、ついでにこれも載せておきます。

**長いので見たい人だけ展開してください**

“`terminal.
$ rails _5.2.4_ new post_images_sample –database=mysql –skip-test –

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ATC 002 B

# はじめに
AtCoder Typical Contest(ATC) とは、競技プログラミングにおける、典型問題を出題するコンテストです。
AtCoder さん、ありがとうございます。

# 今回のお題
*[AtCoder Typical Contest 002 B – n^p mod m](https://atcoder.jp/contests/atc002/tasks/atc002_b)*

今回のテーマ、繰返し二乗法
# Ruby
例えば、2 の 64 乗を求める場合、単に 2 を掛けるのであれば 63 回掛け算が必要ですが、計算結果を利用することにより 6 回の掛け算で求めることができ、計算の高速化につながります。

“`2^64.rb
n = 2
63.times do
n *= 2
end
puts n # => 18446744073709551616

n = 2
6.times do
n *= n
end
puts n # => 18446744073709551616
“`
これを奇数乗や除数にも適応したのが、繰返し二乗法になります。

“`ruby

元記事を表示

[Rails]Pay.jpを利用したクレジット決済機能実装 ③ ~クレジットカード詳細表示・削除~

## はじめに
例によって、某プログラミングスクールの最終課題である、フリマアプリのクローンサイト作成において、購入機能実装時にPay.jpを利用したので、健忘録としてここに記す。
今回は「クレジットカード詳細表示・削除」の実装に取り掛かります。

## バージョン情報
ruby ‘2.5.1’
Rails ‘5.2.4.2’

## 実装の流れ
1. [実装の準備・APIの導入](https://qiita.com/Shunsuke_i_21/items/19c8326282510ae30eab)
2. [モデルの作成・クレジットカード登録](https://qiita.com/Shunsuke_i_21/items/cd638e6aebba126683f1)
3. クレジットカード詳細表示・削除 ← 今回の実装内容
4. クレジットカード購入(決済)機能

## 前提条件として
* 記載はhaml記法で
* [私の参考にしたrailsにhamlを導入するやり方はこちら、、](https://qiita.com/Mits

元記事を表示

Railsのコントローラー(controller)

##1.コントローラの役割
Action Controllerは、MVCモデルのCに相当します。MVCとは、M(Model)、V(View)、C(Controller)の3つの要素のことであり、リクエストを処理するコントローラがルーティング設定によって指名されると、コントローラはリクエストの意味を理解し、適切な出力を行なうための責任を持ちます。これらの処理はほとんどAction Controllerが行い、しかも吟味された規則を使うので、リクエストの処理は可能な限り素直な方法で行われます。
つまり、コントローラー層では、ブラウザなどから発行されたHTTPリクエストの宛先となっているURLや、HTTPメソッド(GETやPOSTなど)を元に、routes.rbで定義された「そのリクエストを処理する担当箇所」を特定し、どのコントローラー(クラス)の、どのアクション(メソッド)が処理をするのか決定する層、ということです。

1.クライアントからのリクエストをWebサーバを介して受け取るます(routes)

2.ルーティング機能がそのリクエストの処理を行うべきコントローラー(ク

元記事を表示

Kinx アルゴリズム – バブルソート

# アルゴリズム – バブルソート

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。「プログラム=アルゴリズム+データ構造」。アルゴリズムの実装例をご紹介。

元ネタは「C言語による(30年経っても)最新アルゴリズム事典」。今回はソート(バブルソート)です。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。

アルゴリズムと言えばソート。今回はバブルソートです。

## バ

元記事を表示

gem webmock の README を翻訳しました

# 概要
gem [webmock](https://github.com/bblimke/webmock) の [README](https://github.com/bblimke/webmock/blob/master/README.md) を翻訳しました。

– 翻訳について
– 翻訳サービス [Deepl](https://www.deepl.com/translator) と [Goole翻訳](https://translate.google.co.jp/) の訳文を参考にしている箇所があります。
– 翻訳対象の[コミットハッシュ](https://github.com/bblimke/webmock/commit/904aa9806a91fb292a142dc2783ff762eacca0d8)
– 非公式の翻訳です。
– 訳文がおかしい箇所があったら指摘をもらえると幸いです。

– ライセンスについて
– [webmock のライセンス](https://github.com/bblimke/webmock/blob/maste

元記事を表示

heroku run rails db:migrateでエラーが出た話

Railsチュートリアルの第6章「6.4最後に」の節でエラーが出たので勉強として書き記しておくことにしました。

###やりたいこと
本番環境でUserモデルを使うために、heroku runコマンドを使ってHeroku上にマイグレーションを走らせたい。

###エラー直前にやったこと

“`
$ heroku run rails db:migrate
“`

###エラー内容

“`
bash: heroku: command not found
“`

###エラー後にしたこと
“`
$ sudo yum -y update
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
$ export NVM_DIR=”/home/ec2-user/.nvm”
$ [ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh”
$ nvm install node –reinstall-packages-from=node
$

元記事を表示

初心者がRubyで自作したLINE botを公開するまで

#目標
自作LINE bot公開
環境構築からゼロからやります
基本的な用語の説明も簡単に把握しよう

# 手段
Ruby on rails
LINE developers
heroku:クラウドプラットフォーム
ngrok:ローカルのwebサーバを外部公開できる
Mac

# 作った人のステータス
Ruby? Rails? なにそれ,おいしいの?

# 作成
## 0. まず開発環境を作る
ほぼこちらを参考にしました.感謝.
[Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)

### マシンスペック

– MacBook Air(mid-2013)
– macOS Catalina 10.15.4

#### Install Homebrew

Homebrewとは(Wikipediaより)

>Homebrewは、macOSオペレーティングシステム上のパッケージ管理システムのひとつである。

Homebrewがインストールされてるか確認

“`c

元記事を表示

RailsチュートリアルをWSLでやってはまった

[以前](https://qiita.com/GodPhwng/items/fd132be92db682d742f1)も同じような記事を書きましたが、WSLでRailsをやった時にはまった事、解決方法をメモしておきます。

#JS、CSSの変更が反映されない
第6版をやっているんですけどなぜかいまだにアセットパイプライン?はSprockets?のようです。

これがキャッシュされている為反映されていないんだと思います。
コンパイルしなおしてもダメだったので、キャッシュのディレクトリごと毎回削除してます。

“`
rm -rf tmp/cache/*
“`

#突然、「500 Internal Server Error 」が出る
突然あるタイミングから「500 Internal Server Error 」が発生するようになり、画面には
`rails We’re sorry, but something went wrong.`
が表示されるようになりました。

ネットでググると`erb`ファイル内の記述ミスが多いとのこと・・・。

確認してみるが、まったく問題なさそう。
どこまでO

元記事を表示

捉えきれなかった例外を勝手にググってくれるUndine をリリースしました

![fabian-grohs-dC6Pb2JdAqs-unsplash.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662/5b6a6669-3c2e-9697-c495-3c7a4e76d232.jpeg)
Railsのproductionモードで静的ファイルが反映されない時

Railsアプリケーションサーバを起動する時に

“`
rails s
“`

コマンドを使うが、このコマンドで起動されるのは`development server`です。

`production server`を起動するには

“`
rails s -e production
“`

オプションを設定する必要があります。

しかし、`production server`ではcssが反映されなかったり、jsが動作しなかったりします。

これは一般的にアプリケーションを公開する場合は、cssなどの静的ファイルはNginxなどのWEBサーバが返却するのが一般的で、アプリケーションサーバの役割ではないためです。

しかし、開発の場において簡易的に公開時の動作を確認したい場合もあります。

そのときは環境変数に次の値を設定します。

“`
export RAILS_SERVE_STATIC_FILES=1
“`

今回は例として`1`を設定しましたが、実際はどんな値でも問題ありません。
これは、`config/enviroment/production.rb`を確認すれば理解でき

元記事を表示

MacにRuby / Railsをインストール 2020-04

新しいMacを買ったのでRubyとRailsをインストールしました。

環境: macOS Catalina, Xcode 11.4.1, Ruby 2.6.6, Rails 6.0.2.2

## Xcodeのインストール

Apple StoreからXcodeをインストールします。20分以上かかりました。

https://apps.apple.com/jp/app/xcode/id497799835

インストール後、いったんXcodeを起動して、追加のインストールを行います※1。

その後、次のコマンドを実行してCommand Line Toolsをインストールしました。昔はこの手順が必須でしたが、現在でも必要なのかどうかわかりません。というのは、※1の後でclangとgitが入っていたからです。※1と`xcode-select`の関係を知っている人がいたら教えてください。

“`
% xcode-select –install
“`

## Homebrew、rbenvのインストール

[Homebrewのサイト](https://brew.sh/) からコマンドをコピ

元記事を表示

[ Ruby ] DATA定数って何よ? [ 知ってる? ]

# DATA定数って何よ?

スクリプトの終わりを表す“`__END__“`キーワードと一緒に使う定数よ。
“`__END__“`キーワード以降に書いた内容をそのスクリプトでデータとして扱うことができるわ。
百聞は一見にしかず、サンプルコードよ。

“`ruby:sample.rb
puts DATA.gets # => AAA\n
puts DATA.gets # => BBB\n
puts DATA.gets # => CCC\n

__END__
AAA
BBB
CCC
“`

こんな感じでファイルと同じように扱うことができるわ。
そのまま取り出すと改行コードの“`\n“`が付いて来ちゃうから適宜“`chomp“`メソッドで改行コードを取り除くといいわ。

## 何が嬉しいの?

書き捨てのシンプルなスクリプトを書くときとかに、使うデータをわざわざ変数やら定数やらで定義しなくてもいいっていうのがメリットね。

まあ使い勝手は…あなた次第よ! あたしは割と使うわ、おしゃれだもの。

以下、配列で回す場合のおまけのサンプルコードよ。

“`ruby:samp

元記事を表示

非Active Record(Active Model)のデータをFactoryBotで生成する

最近書いたテストが、ActiveModel(非アクティブレコード)に基づいていました。ちょっと工夫も必要だったので、備忘も兼ねて記事を残そうと思います。
今回テストを書いたモデルはこんな感じです。

### Recordsモデル(非Active Record)
| column | type |
|——–|——|
|id|integer|
|title|string|
|information|text|

### テスト用のモデルを作る
`spec/support/models/record.rb` に以下のように記載し、テストに使えるモデルを作成します。

“`ruby:spec/support/models/record.rb
class Record
attr_accessor :id, :title, :information
end
“`

### ファクトリを生成する
`spec/factories/record.rb` にファクトリを生成します。
class名を省略せずに入れるところがポイントです。

“`ruby:spec/factorie

元記事を表示

【Ruby on Rails】Deviseで認証機能を実装する方法

こんにちは!あっきー[(@IwswAkht)](https://twitter.com/IwswAkht)です!

Ruby on Railsの Gemである「Devise」を使った認証機能の実装方法を書きました。
すでに多くの記事もあるし、関わった開発案件でも多々使われている場面はあったのですが、実際に自分でやったことがなかったので忘備録も兼ねた記事になります。

Web系の開発をさせていただくようになってまだ経験は浅いなりに思ったことなのですが、開発現場では言語の知識をめちゃくちゃ覚えておくというよりは以下のことが結構だいじだなと感じています。

・ライブラリを知っていて使えるか
・DBの設計の知識を持っているか
・ある程度のインフラ知識があるか

なので、今後はライブラリなどを積極的に使って見て、その方法や使い勝手などを記事にまとめておきたいと思い本記事を執筆しました。

今後とも継続して知識を蓄積していき、自分や他の誰かの役に立つ記事を増やしていければと。

## Railsプロジェクトの作成

適当な作業フォルダを作成してから Rails tutorialに沿った方法で作成

元記事を表示

vscodeで変数名の@やメソッド名の!を含んでダブルクリックで選択したい

環境 mac

~/Library/Application Support/Code/User/settings.json
を開いて次を追記する。

“`
“editor.wordSeparators”: “`~#%^&*()-=+[{]}\\|;:’\”,.<>/?”,
“`

もしくは、「command + ,」 でsettingを開いて窓に「wordSeparators」と入れて検索し出てきた設定から”@”や”!”を抜く。
設定はリセットできるので、うまくやろう。

参考
[Make Visual Studio Code to correctly select PHP variables on double\-click \| Igor Kromin](https://www.igorkromin.net/index.php/2018/04/12/make-visual-studio-code-to-correctly-select-php-variables-on-double-click/)

関連
[phper用 vscodeでダブルクリックで、$を含んで変数を選択し

元記事を表示

ThanksBoard ‬‪~コロナと闘う全ての人へ~ 医療従事者応援サイト

#はじめに
Twitter、FaceBook、その他媒体から、ご覧いただきありがとうございます。
早速ですが、感謝・応援しましょう!
以下、ご覧くださ〜〜い!宜しくお願いします!

# ‪Thanks Board ‬ ‪~コロナと闘う全ての人へ~

最前線でコロナと闘い続けている‬‪医療従事者の方々への感謝・応援サイトを作りました!
‪皆さんのお力を貸して頂けませんか?( ^∀^)

[こちらをクリック!](http://18.177.93.163/)

## Mind ~気持ち~
‪今、自分にできることは大したことはありません。‬

1人でも多くの医療従事者の方々が、このサイトを見て、勇気・元気が出れば!と思っています!‬

**‪1人でも多くの方に一緒に感謝を伝えましょう!**

‪宜しくお願いします!‬

## Flow ~当サイトの流れ~

‪感謝・応援の流れです!‬
‪**会員登録など何もありません:+1:**‬
‪①Thanks Messagesをタッチ!‬
‪②5つのメッセージがあると思います!‬
‪③アイコンをPUSHして感謝・応援!‬
‪④カウントしてます!‬

元記事を表示

OTHERカテゴリの最新記事