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

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

【Nokogiri】RSSニュースをRubyで扱ってみよう!

こんにちは!
今回は、RSSのニュースをNokogiriで解析して、Rubyで扱うまでをまとめてみようと思います。

このまとめでは、Nokogiriというgemを使用して、RSSニュースをRubyで扱えるようにしていきます。
RSSニュースをRubyで扱う事が出来れば、自作キュレーションメディアを作れたりして面白いのでやってみましょう。

# 今回作るもの
以下のゲーム情報を配信しているRSSから、自動でニュースのタイトル部分を取ってきて配列に入れてみようと思います。
https://automaton-media.com/feed/

とりあえず今回は、簡単なもの作ってまとめる事にします。
(気が向いたら、キュレーションメディアをRailsで作る!みたいな大掛かりな記事を書こうかな)

# XMLデータの簡単な説明
RSSニュースのデータを扱う前にXMLについて簡単に説明します。

![ゲームRSSオリジナル説明用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/343136/f87154f

元記事を表示

【Ralis】単体テストについて

## 最初に

Rspcを用いてモデルのバリデーションの単体テストを行った際の手順を備忘録として残します。

## Rspecとは
RubyやRailsの代表的なテストツールのことで、クラスやメソッド単位でテストするために使用するためのgem。

##環境
・Rails 5.0.7.2
・Ruby 2.5.1
・rspec-rails 3.9.0
・factory_bot_rails 5.1.1

## 事前準備

### 1.rspecとFactory_bot gemの導入

~~~
#gemfile

group :development, :test test do
#開発環境とテスト環境で使用したいのでこの中に記述。
gem ‘rspec_rails’
gem ‘factory_bot_gem’

end
~~~
gemを記述できたらbundle install

### 2.rspecファイルの作成と動作確認

ターミナルで、

~~~
$ rails g rspec:install
~~~
コマンド実行後下記のようにファイルが作成されればok。
~~~
create .

元記事を表示

正規表現の基礎

###概要
irbを使って正規表現について見ていきます。

`irb`

“`irb
irb(main):001:0> name = “taro”
=> “taro”
irb(main):002:0> name.sub(/taro/,”kotaro”)
=> “kotaro”
“`
subメソッドを使ってtaroという文字をkotaroに置き換えています。
第1引数に置き換えたい文字列を指定し、第2引数に変換後の文字列を記述します。

“`irb
irb(main):004:0> name.match(/taro/)
=> #
irb(main):005:0> name.match(/bob/)
=> nil
“`
matchメソッドを使って引数に指定した文字列が含まれているかをチェックしています。
含まれていた場合は指定した文字列がMatchDataオブジェクトとして返り値で返ってきます。
含まれていなかった場合はnilが返ってきます。

“`irb
irb(main):006:0> array =

元記事を表示

【Rails】コメントされると投稿が削除できない!?

# 投稿の経緯
Twitter、FbのようなSNSを作成中のことです。
投稿機能に削除ボタンを付けたのですが…**投稿が消せない!!**

もっと細かく言うと、ただの投稿は消せる。
投稿に写真を載せたり(postモデルとimageモデルで分けている場合に限る)
投稿にコメントをされたりすると消せなくなる。。

**【本日の登場人物】**
(親)postモデル →投稿を保存するモデル
(子)imageモデル →投稿に紐づく画像を保存するモデル
(子)commentモデル →投稿に対するコメントを保存するモデル

つまり、**postモデル**にネストしている**子モデル(imageモデル、commentモデル)**に値が入るとpostレコードを削除できなくなってしまう訳ですね。

実際のコードを見てみましょう。
# 実際のコード
“`:post.rb
class Post < ApplicationRecord belongs_to :user has_many :comments has_many :images end ``` 何の変哲もないpostモデルのアソシエーシ

元記事を表示

Railsの基本理念

Railsの生みの親DHHが書いた基本理念をまとめました

https://rubyonrails.org/doctrine/#optimize-for-programmer-happiness
https://postd.cc/rails-doctrine/

# 1. プログラマの幸福度を最適化

DHHがRailsを作った理由は「自分が笑顔になるため」

論理的ではなくむしろ病的だが、自分が幸福になるために作ってきた

Railsのコミュニティは幸福のために集まり、幸福の最適化によってRailsは形成されてきた

# 2. 設定より規約 (Convention over Configuration、CoC)

Railsの生産性に関する初期のモットーは「無駄な個性をやめれば、平凡な決断で苦労することなく、重要な場面で仕事のスピードが増す」データベースの主キーがidか、postIdか、posts_idか、pidか議論するのは無駄設定から規約に移行することで、無駄な熟考を避け生産性を高めることができる

加えて、規約は初心者のハードルを下げてくれるRailsの規約の中には初心者が知ら

元記事を表示

100日後に1人前になる新人エンジニア(5日目)

#100日後に1人前になる新人エンジニア(5日目)

[100日後に1人前になる新人エンジニア(4日目)](https://qiita.com/akilax/items/dc315b5452b39caaf15e)

どうもこんばんは早くも5日目になりました。
今日のお題はRailsのroutesに関してです。
調べてみると結構いろんなルールがありましたのでまとめてみたいと思います。

##Rails のルーティング
###Railsルーター
Railsのルーターは受け取ったURLを認識し、適切なコントローラ内アクションに割り当てるよ。

“`
GET /patients/17
“`
こんなURLでリクエストがあったとき

“`
get ‘/patients/:id’, to: ‘patients#show’
“`

patientsコントローラのshowアクションに割り当てられられています。
17の部分は :idに対応しているよ。
to: 以降は ’コントローラー#アクション’ って感じで対応付けがされています。

###Resourc

元記事を表示

ユーザー登録時のエラーメッセージ、サクセスメッセージの表示の仕方

#はじめに
RailsでWebサービスを作成の際にサインんアップ時のフラッシュメッセージの表示の仕方を自分の得た知識の整理のために記事を作成しました。
基本はRailsチュートリアルで得た知識になります。
#前提条件
– Railsを使用したWebサービスを作成途中で、すでに基本的なログイン機能を自分でdeviceを使用せず作ったとします。
– バリデーション実装済み

###controller
“`ruby:
def create
@user = User.new(user_params) 
if @user.save #@userの保存に成功
redirect_to @user  #ユーザー詳細にリダイレクト
else
render ‘new’  #失敗時は新規登録へ戻る
end
end

private

def user_params
params.require(:user).permit(:name, :email, :password,

元記事を表示

ハードコーディングとは

#はじめに
この業界で仕事をし始めてから日々聞きなれない単語を聞くことが多いのですが、今日は「ハードコーディング」という言葉を耳にして意味がわからなかったので、調べた結果をアウトプットさせていただきます。

#ハードコーディングとは
主にこちらの記事を参考にしました。
[「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word12866.html)

記事にも書いてありますが、一言で言えば、「別のところに分けておいた方が良い処理や値をソースコードの中に直接埋め込むこと」です。

具体的なプログラムで見るとわかりやすいです。

“`sample.rb
price = gets
puts price + price * 0.1
“`

上は物の値段を標準入力で受け取って、消費税率10%の税込価格を表示するごく簡単なRubyスクリプトです。
プログラムでは消費税率0.1が、税込価格を計算する箇所に直接書かれています。このスクリプトを書いた本人は税込価格を表示するプログラムだとわかっているため特に問題ありませんが、他の人

元記事を表示

【Rails 6】active_strageの画像の保存タイミングが変更された

今回はRails6から画像の保存のタイミングが変更したようなので調べてみました。

#Rails バージョンの確認

“`
$ rails -v
Rails 6.0.2.1
“`

#ActiveStrageのインストール

“`
$ rails active_storage:install
$ rails db:migrate
“`

#画像添付の準備
最終成果物を載せます。

routeにpreviewを追加します。

“`ruby:route.rb
Rails.application.routes.draw do
resources :users do
collection do
post :preview
patch :preview
end
end
end
“`
モデルにhas_one_attachedで画像を扱えるようにします。

“`ruby:user.rb
class User < ApplicationRecord has_one_attached :image end ``` 次にcontr

元記事を表示

nginx 起動コマンド

# nginx設定箇所

“`
/etc/nginx/conf.d
“`

# nginxコマンド
* 起動

“`
sudo service nginx start
“`

* 再起動

“`
sudo nginx -s reload
“`

* 停止

“`
sudo nginx -s stop
“`

元記事を表示

『kaminari』配列に対してページネーションを作成する方法

#はじめに
今回は、配列に対してページネーションを作成しビューで表示するまでのサンプルコードを紹介します。

##コントローラー

お気に入りした商品をユーザーのマイページにて表示するためにコントローラーでこのようなコードを書きました。実はこれ、アソシエーション組めばもっと簡単にできるので以下の記事を参考にしてみてください!
https://qiita.com/yummy888/items/22db2f8b79b5be148b69

“`ruby
def index
items = []
likes = Like.where(user_id: params[:item_id])
if likes.present?
likes.each { |like| items << Item.find(like.item_id)} end @items = Kaminari.paginate_array(items).page(params[:page]).per(15) end ``` user_idになんでparams[:item

元記事を表示

PAY.JPで登録したクレジットカードで商品購入機能を実装する

#はじめに
個人アプリにて、クレジットカード決済を行うため、PAY.JPを導入しました。
機能実装に関して、備忘録として記載しています。

前回の記事
[PAY.JPでクレジットカードの登録・削除機能を実装する](https://qiita.com/kenzo-ta/items/3eb590b962384c266381)

# 前提条件
– Rails 5.2.4.2
– Ruby 2.5.1
– devise使用
– haml使用
– VSCode使用

前回までにカード情報の登録を行うためCardモデル及びCardコントローラーを作成しました。
今回は新たに購入用モデル及びコントローラーを作成して購入処理を行っていきます。

# 手順
1. モデルの作成
2. テーブルの作成
3. コントローラーの作成

## モデルの作成
今回はOrderモデルを作成していきます。

“`ruby
class Order < ApplicationRecord belongs_to :user has_many :products, through: :order_details

元記事を表示

Ajax通信をrubyに導入した話

#jQueryでAjax通信 × Railsでサーバー処理#

jQueryのコードを使ってAjax通信でリクエストし、その処理をRailsで行ってjson形式のレスポンスで返したいと思います。
具体的には、「ボタンをクリックしたらリクエストが発動して、設定したデータをRailsに送信し、レスポンスをクラインアントが受け取っとら、アラートやコンソール上で送られてきたデータを表示する」ということをやってみたいと思います。

今回は、クライアント側とサーバー側を分かりやすくするため、Erbを使わずに処理を行いたいと思います。
したがって、今回利用するファイルの拡張子は以下になります。

####クライアント側####

– html
– js

####サーバー側####

– rb

##HTMLファイルで必要なコード##

・jQueryのサーバーから、jQueryを使えるようにする機能を読み込むコード(いわゆるjQueryの導入)

“`