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

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

ruby メソッドの作り方

ドットインストール(https://dotinstall.com/)を見て
自分なりにまとめたものです。

#メソッド

“`
def sayHello
puts “Hello word!!”
end

sayHello
“`
実行結果:Hello word!!
 
– メソッドを呼び出すときはメソッド名書くだけで呼びだせる

###引数を渡すことも出来る
“`
def sayHello(name)
puts “Hello #{name}!!”
end

sayHello (“Angela”) #()は省略可能
“`
実行結果:Hello Angela!!

# 引数にデフォルト値も設定できる

“`
def sayHello(name = “Angela”)
puts “Hello #{name}!!”
end
# nameを渡されなかった時に”Angela”が渡される
sayHello

“`
実行結果:Hello Angela!!

####メソッドは最後に評価された値を返す

“`
def sayHello(name =

元記事を表示

ruby while、for、loop、break、nextについて

#while

“`
i = 0
while i < 10 do puts "#{i}: hello" i += 1 end ``` ※ 「i = i + 1」は「 i += 1 」と同様の意味 # times - timesは数字オブジェクトのメソッド ``` 10.times do |i| puts "#{i}:hello" end ``` - do~endの中で繰り返したい処理を繰り返す - do の後で|i|を定義することでwhileの時と同じように何回ループしているかが分かる ###上記のtimesは1行で書くことが出来る ``` 10.times { |i|puts "10#{i}:hello" } ``` # for文 - doは省略出来る ``` for i in 18..20 do p i end for color in ["red", "blue"] do p color end for name,score in {aratomai: 200, Mikkey: 500} do

元記事を表示

Ruby独特の代入演算子 ||= の意味について説明してみた

# 代入演算子とは

Rubyも含め、多くのプログラミング言語では、`x`に`1`を加算する操作を以下のように記述[^インクリメント演算子]できます。

“`
x = x + 1
“`

この操作は、Ruby(ほか多くのプログラミング言語)において、以下のような短縮表記が可能です。

“`
x += 1
“`

このときの`+=`という演算子、並びに加算以外の演算に対して同様の動作を行うように定義された演算子を総称して「代入演算子」と呼びます。

[^インクリメント演算子]: なお、Ruby以外の言語では、`x = x + 1`を`x++`と表記できるものがあります。こうした使い方をする`++`を「インクリメント演算子」と呼びます。しかしながら、Rubyでは`x++`のような表記を使うことはできません。

## `+=`以外の代入演算子

Rubyにおいては、`+=`以外の代入演算子としては以下のようなものが存在します。

“`
# rails console
>> x = 1
=> 1
>> x += 1
=> 2
>> x *= 3
=> 6
>> x -= 8
=> –

元記事を表示

Ruby初心者がいきなりRailsするときのMemo

## 初めに
これまではPHPかPythonでの開発がほとんどだったのですが、様々な事情により、Ruby on Railsの案件に取り組むことになりました。これまでよくやっていたPython + Flask構成と比較しながらRuby on Railsを勉強しているのですが、その試行錯誤を残しておきたいと思います。内容は随時更新します。

## 目次

* Rubyの環境構築
* Railsの導入

## Rubyの環境

Pythonでは、以下の環境を使っていました。

“`
* pyenv(Pythonのバージョン管理)
* pipenv(仮想環境構築+Packageの管理)
“`

Rubyでそれぞれに対応するのは、(というかPythonのそこら辺のツールはRubyのツール群に触発されて開発されたものが多いので、こちらのほうが大元というべきなのですが、)

“`
* rbenv(Rubyのバージョン管理)
* bundler(gemの管理)
“`
です。一般的なRubyプロジェクトは、bundlerを用いて

“`shell
mkdir PROJECT_DIR
cd PR

元記事を表示

Railsの便利機能「Application Template」で rails newと初期設定を自動化できた!

Railsアプリの新規作成から初期設定までを`rails new`と`rails db:create`だけで完了させます。
ひたすらの設定をコピペコピペ、ちょっとしたtypoでRailsAbort!によるグツグツから開放されます。
テンプレートファイルは1つにまとめておけるので、Railsアプリ新規作成時の手順書としてもメンテできて一石二鳥です。

## 環境
– MacOS 10.14.6
– Ruby 2.6.3
– Rails 5.2.3
– MySQL 8.0.16

## 方法

RailsのApplication Templateという機能を使用します。

## やること

– ApplicationTemplateファイルをつくります。
– `rails new -m` コマンドをうちます。
– `rails db:create` コマンドをうちます。
– 以上(*´∀`)

## 手順

#### ①ApplicationTemplateファイルをつくる

プロジェクトフォルダのルートに`app_template.rb`を新規作成します。

むずかしく考えなくていいです

元記事を表示

rescueでエラーを拾ってくれない問題

#BackGround
[Postman](https://www.getpostman.com/)を使ってRailsのアクションを設計どうりに処理してくれるかテストしていました。
問題になったのはこの“`user_controller“`のshowアクション

“` user_controller.rb
class UsersController < ApplicationController def show @user = User.find(params[:id]) render json: { status: 'success', data: @user } rescue ActiveRecord::RecordNotFound render json: { status: 'error!', data: @user.errors } end private def user_params params.require(:user).permit(:user_name,:email,:password,:pa

元記事を表示

【Ruby on Rails】gem「devise」のREADMEを読んでみた

#はじめに

オープンソースのソフトウェアやプログミング言語、ライブラリには、間違いなく公式のドキュメントが存在します。
学習のために無料のラーニングシステムを使うこと、書籍を購入することもいいですが、

**個人的には、公式ドキュメントには必ず一度は目を通すべきもの**だと思ってます。

なぜなら出版されてしまった本とは異なり、常に最新の状態にアップグレードされ、多くの人が目にするので間違いが日々修正されているからです。

**英語が読めない? 長くて読む気がでない? ならばググりましょう!** 
例えば英語がわからないなら、この世の中便利な時代なので、英語のドキュメントについてすでに読んだ人の記事などが検索してヒットするはずです)

#やったこと

Ruby on Railsの開発環境下で、**認証機能を実装したい際に利用することが多いgem「devise」**のREADMEを読んでみました。
※2019年10月時点の情報です。

https://github.com/plataformatec/devise

# deviseが持っているモジュール(簡単に言えば機能)

1.

元記事を表示

クラス、インスタンスをまとめてみた

#現在の学習進捗

Proggate 1-4まで修了
※各lessonを3周はしている
4まで進めましたが、1-3と比べてとっつきにくい内容でしたね。
3周しましたがまだ頭に落とし込めていない箇所が多々あります。

4章の内容
– クラスとインスタンス
– インスタンスメソッド
-「料理注文システム」を作ろう
最終的には料理注文システムを作っていくプログラムになっております。

#クラスとは
– データとそのデータを取り扱うメソッドをひと固まりにまとめたもの
– プログラミングで設計図のことをクラス、「もの」のことをインスタンスという
参考にしたURL

【Ruby入門】変数の扱い方まとめ|クラス・インスタンス・グローバル

# initializeの基本的な使い方

・classデータの初期化処理
・newされた際に一度だけ実行される
・オーバーロードできない
・メソッド内ではreturnは使えない
参考にしたURL

【Ruby入門】classのnewとinitializeについてまとめ

# インスタンス
– インスタンス化とは、classの定義の元に新たな変数を作成

元記事を表示

1対多のモデル間のテーブルに一つのformで一括登録する

## やりたいこと
1対多の関係を持つモデルに対し、同時にレコードを登録する。
検索した際によく出てきたaccepts_nested_attributes_forは使わず、一括登録をするためのモデルを別で用意して実装。

## 前提条件
下記のように、一人のcustomerが多くのreservationsを持つ、1対多の関係。

“`models/customer.rb
has_many :reservations
“`
“`models/reservation.rb
belongs_to :customer
“`

## 考え方
1. customerとreservationを一緒に扱うためのモデル(customer_form)を作成。
2. 作成したモデル内で、架空のテーブルを作成し、2つ同時に登録するためのsaveメソッドを定義する。※実際はテーブルは存在しません。イメージです。
3. customerコントローラでnewアクション、createアクションを定義。その際、②で作成したモデルのsaveメソッドを使う。
4. viewを作成する。
5. レコードを登録した後に

元記事を表示

シンプルにCentOS7にruby on railsを入れるの巻

これまた備忘録です。
他の人が書いた優秀な記事はたくさんありますが、少なくとも私の環境では…って感じです。

## 前提
– OS: CentOS Linux release 7.7.1908 (Core)
– 最小限のインストール

## ruby on railsのインストール

### gitのインストール

“`
# yum install git
“`

### rbenv/ruby-buildのインストール
ユーザのホームディレクトリにrbenvを導入する。

“`
# su – <一般ユーザ>
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
“`

一般ユーザで再ログインしてインストール確認

“`
$ rbenv
rbenv 1.1.2-11-gc46a97

元記事を表示

画像(複数)アップロードCarrierWaveを使ったmodelのRspec

複数の画像のRspecテストでつまずいたので備忘録です!

###参考
>URL:(https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Use-test-factories)

>[画像アップロード CarrierWaveを使ったmodelのRSpecを通す](https://qiita.com/motty93/items/5cbc46ce79a502fcaa65)

###動作環境
– Ruby 2.6.0
– Rails 5.2.3
– Mysql 5.7
– macOS Mojave 10.14.6

##モデルのアソシエーション
“` post.rb
class Post < ApplicationRecord belongs_to :user mount_uploaders :pictures, PictureUploader validates :title, presence: true, length: { maximum: 30 } validates :descripti

元記事を表示

RailでCSV出力する方法

# RailでCSV出力する方法
RubyのCSVを利用すれば簡単にCSV出力が可能です。

## 環境
ruby 2.6.3
Rails 6.0.0

# View
“` ruby
# ポイントは引数にformat: :csvを指定することです。
# これでcsv形式でのリクエストを送ることができます。
<%= link_to "csvで出力する",hoges_path(format: :csv) %>
“`

# Controller
“` ruby
# CSVクラスを利用するためにrequireは必要になります。
# https://docs.ruby-lang.org/ja/2.0.0/class/CSV.html
require ‘csv’

class HogesController < ApplicationController def index @hoges = Post.all # respond_toでリクエストに応じて出力のフォーマットを分けるように実装します。 # view側のlink_toの引数にformat: :csvを

元記事を表示

railsチュートリアルをしていく~1章~

##概要
春にrailsチュートリアルをしていたのだが、夏に海外で2ヶ月遊んでからPCを触ることなく、怠惰の日々を送っていたため、何もかも忘れたので、今更必死にやっていく。今度は記事に書く。そしたら続けれるはず…

##1章 hello_app

まず、hello_appアプリの作成

“`terminal
$ rails new hello_app
$ ls hello_app #hello_appの中身を確認
Gemfile app/ db/ public/
Gemfile.lock bin/ lib/ test/
README.md config/ log/ tmp/
Rakefile config.ru package.json vendor/
“`

次にGemfileを編集する

“`terminal
$ cd hello_app #hello_appディレクトリに移動
$ open gemfile #Gemfilを

元記事を表示

AWSへデプロイしてみよう(〜仮想サーバへデプロイ その4)

## 13.EC2でのデータベースの設定
まずは PostgreSQL をインストールします。

“`
$ sudo su –
$ yum -y install postgresql94 postgresql94-server postgresql94-devel postgresql94-contrib postgresql94-docs
$ /etc/init.d/postgresql94 initdb
[起動]
$ /etc/init.d/postgresql94 start
“`

設定ファイルを編集します。

“`
$ vi /var/lib/pgsql94/data/postgresql.conf
“`

三番目のトピックにある、listen_addressesのコメントを解除(先頭の#を削除)して、設定を’localhost’から’*’に編集してください。

“`

#——————————————————————————
# CONNECTIONS AND A

元記事を表示

Rails/統合テストのScreenshot全画面表示設定

## 概要
アプリケーションを作ってごりごりシステムスペックを書いているわけですが。
テストコードはちゃんとテストとして成立しているかチェックしながら書いていくことが多いと思います。

そこでcapybaraを使った統合テストでは、failedが出るとスクリーンショットを取ってくれます。
このスクリーンショットと照合しながらテストコードの性能をチェックしていくことになるのですが・・・

しかしこのスクリーンショット、デフォルトだと小さい!
画面の下の方にリンクを置いてるのに上の方しか表示されねえ!

ってことで、設定方法をまとめとこうかなと思います。

## 設定方法

“`ruby:spec/spec_helper.rb
require ‘capybara/rspec’

Capybara.register_driver :selenium_chrome_headless do |app|
options = Selenium::WebDriver::Chrome::Options.new

[
“headless”,
# ここの倍率を変更すれば、スクリー

元記事を表示

Rubyでバブルソートを表現してみよう

ryoです。三日坊主してると思いました?自分も思ってました。
unityのアプリを作ってたのですが、自分で理解できなくて、アウトプット出来ないんです。すみません。
バブルソートというものを勉強したのでRailsで表現できるように挑戦しようと思います。

## この記事を見て身につくこと
・バブルソートの意味がわかる
・Rubyでバブルソートを表現できる

## 目次
– そもそもバブルソートって何?
– バブルソートのルールと手順
– 完成コード
– 各行のコード解説
– その他のソートの種類
– 実は・・・

## そもそもバブルソートって何?

**バブルソート**とは、ソートアルゴリズムの一つです。
**ソートアルゴリズム**とは、データを整列するための方法みたいものです。ソートというのが整列という意味なので、そのままです。

ではバブルソートとは、どうやってデータを整列していくものかについて見ていきます。

## バブルソートの手順、ルール

– 先頭の要素’A’と隣り合う次の要素’B’の値を比較する
– 要素’A’が要素’B’より大きいなら、要素’A’と要素’B’の値を交換

元記事を表示

ruby + redis + heroku + ニコニコAPI + Twitter APIを使ってプリパラ・プリチャンBBシリーズ タグの動画をつぶやくbotを作る

# 発端

> 自作でTwitterのbot作りたいな〜
> せやニコニコのプリチャンBBシリーズとプリパラBBシリーズのタグの動画だけを抽出してランダムにつぶやくbotを作ろう

# 環境
– 言語:Ruby 2.6.3
– データ保存:Redis
– 動作環境:Heroku

構成はこんな感じ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307103/bd425513-cc30-984a-e3b6-114885a93bb7.png)

# heroku

– gitで簡単にコードがデプロイできて色々勝手にやってくれる便利なやつ
– heroku schedulerを用いると定期的な処理ができる
– redisやpostgresなんかにも対応してる
– 個人的にはElixirのデプロイにも対応してるのが感動してる
– 今回のように簡単なアプリケーションからそれなりに大きなアプリケーションまで扱える

詳しくは公式サイトを見てください https://jp.heroku.com/

元記事を表示

新人がRuby始めて1ヵ月でRubySilver合格の体験記

# はじめに
**Ruby Silver資格に合格しました。**

Ruby Silverは75点ボーダー(50問中38問取れれば合格)のところ、自身の合格点は84点。
8問ぐらい落としてる事になるので特筆するほど良い点数ではないのだけれど、タイトルの通り、RubyでHelloWorldを打ってから1ヵ月そこそこである事を思えば、それなりに頑張ったのではないかと甘めに自己評価……。

既に開発経験者の方が書いた合格体験記は多々あったのですが、本当に初心者という人の合格情報はあまり沢山ネットにもなかった為、自分で受ける際にどれぐらい勉強していけばよいのかかなり不安だった。そんな動機で合格体験記を書く事にしました。

# 書いた人のスペック
・SE未経験入社1年目
・開発経験なし
・Java研修済
・他に持ってる資格はせいぜいIパスぐらい

# 試験1ヵ月前:はじめてRubyでHelloWorldを打つ
たまたま業務中にほんの軽くだがRubyの学習を受けられる機会があったので、そこで基本文法や簡単な仕組みなどの基本中の基本については習得しました。

本当に**Ruby自体が全く初めてという

元記事を表示

AmazonAWSLambdaでRuby使ってpostgresにアクセスする時にIgnoring pg-XX because its extensions are not built. Try: gem pristine pg と出た時の対処法

lambdaでRubyを使ってPostgresにアクセスする際に以下のようなエラーが出る場合があります。

“`
Ignoring pg-1.1.4 because its extensions are not built. Try: gem pristine pg –version 1.1.4
“`
それをどのように解決したかを記載します。

###結論
pgやnokogiriなど、c言語のライブラリを使用しているものをrequireする際は
linux環境(redhat系)でbundle installを行ったvendorフォルダをlambda上にアップロードする。

###原因
lambdaがc言語のライブラリを参照する際にライブラリのパスが分からない。

###解決方法
dockerでAmazonLinuxの仮想環境を作成し、そこでbundle installを実行します。

####前提
– GemfileでRubyの開発環境が作れる
– Dockerがインストールしてある

####通常のlambdaでRuby動かすための環境構築
– Gemfileを作成

“`

元記事を表示

【Ruby on Rails】テーブル名を変更するときにやること一覧&ステップ

## やりたいこと
– テーブル名を修正する
– モデルやコントローラーも名前修正する

## 環境
– Rails 5

## 前提
– テーブル名“trashes“を“trashes_objects“に変更すると仮定して進めます。

## 方法
### 1. マイグレーションファイルを作成
“`rails g migration change_[old_table_name]_to_[new_table_name]“`といった名前のマイグレーションファイルを作成します。

“`shell:terminal
$ rails g migration change_trashes_to_trash_objects
“`

### 2. マイグレーションの中身を書いていく

“`ruby:20191031040820_change_trashes_to_trash_objects.rb
class ChangeTrashesToTrashObjects < ActiveRecord::Migration[5.2] def change rename_tabl

元記事を表示

OTHERカテゴリの最新記事