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

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

2重ハッシュ

## 初めに
メモがわりに使っているのでわかりにくい部分や省略しているところがありますがご了承ください。
### 2重ハッシュから値を取り出そう

“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`
上記のハッシュを持つ変数user_dateから以下の取り出します。

“`
George
Alice
Taro
“`
### 解説
ではまずハッシュから値を取り出すには以下のような記述をします。

“`
ハッシュ[取り出したい値のキー]
“`
しかし今回はハッシュの中にハッシュが入っているためこれだけでは目的の値を散り出すことができません。
ではどのように書いていくかというと順番に取り出していきます。
書き方としては以下のようになります。

“`
ハッシュ[取得したいキー][取得したいキー][取得したいキー]
“`
今回はnameというキーを取り出したいので順番に

元記事を表示

ruby ハッシュについて

## 初めに
rubyの練習問題を自分なりにまとめています。メモがわりにまとめているので省略している部分やわかりにくい部分もあるのでご了承ください。
### ハッシュであらわす
“`
puts hash.keys
puts hash.values
“`
上記のメソッドを使用した時に以下のように表示されるようにします。

“`
one
two
three
1
2
3
“`

答え

“`
hash = { one: 1, two: 2, three: 3 }
“`

###用語について
ではまず何個か用語の説明をします。
#####ハッシュ
ハッシュとは関係の表す複数の値を管理する時に使います。
データーとそれに対応する名前をセットにして管理します。
データーをバリュー。対応する名前をキーとしてまとめます。

“`
変数 = {キー1: 値 ,キー2: 値}
“`
####シンボル
シンボルとはコロン記号:を前置きして定義したもの。
文字列のようですが実際の中身は数値である値のことです。私も詳しく理解できていないところはありますが、メソッドなどの名前を識別するためにオブジ

元記事を表示

Rails mimemagicエラー

mimemagicエラーが発生。詳しくは以下から。

https://qiita.com/Esfahan/items/45c0cdeb29509b7ec1c5#rails-525-6036-6131%E3%81%AFmimemagic%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F327%E8%BF%BD%E8%A8%98

docker-compose buildをしたら、以下のエラーが発生。
私がしているのは、dockerとrailsでアプリを作っている最中。

##今回のエラー

“`
#13 0.732 Fetching https://github.com/manfe/refile.git
#13 2.642 Fetching gem metadata from https://rubygems.org/…………
#13 4.718 Resolving dependencies…
#13 5.021 Your bundle is locked

元記事を表示

【Rails】destroyで関連するレコードも一緒に削除する方法

たとえば、自分の投稿したメッセージを削除する機能を実装しようとした際に、そのメッセージにいいねがついていると、いいねも一緒に削除しないといいねだけが残ってしまい、不具合の原因となってしまいます。

# 方法
Modelに“`dependent: :destroy“`を追記してあげれば、railsがよしなに削除してくれます。

“`ruby
# message.rb
has_many :likes, dependent: :destroy
“`

ちなみに、viewはこのように記述しております。

“`erb
<%= link_to "削除",{controller: "messages", action: "destroy", message_id: message.id, user_id: current_user.id, score_id: @score.id }, method: :delete, remote: true, data: {confirm: "削除しますか?"} %>
“`

元記事を表示

Rubyのプログラム実行

本日は、基礎中の基礎になるがRubyのプログラムの実行の仕方を記事にしたいと思う。
プログラムを実行するまでの流れはとてもシンプル。

1.ファイルを作成
2.ファイルにプログラムを記述
3.ファイルを指定してプログラムを実行

最終目標は、ターミナル上に「Hello world」と表示させる。

### Rubyファイルの作成
まず、テキストエディタを開きファイルを作成する。
Rubyファイルを作成するには、拡張子に「.rb」をつける。
[![Image from Gyazo](https://i.gyazo.com/6d06a1f311d8201e92c79049b8a135ed.png)](https://gyazo.com/6d06a1f311d8201e92c79049b8a135ed)
これで、作成は完了。

### Rubyでプログラムを書く
作成したファイルにプログラムを書いてみる。

“`ruby
puts “Hello World”
“`
putsは、Rubyの命令の1つで、ターミナルの画面に文字を表示するための記述。

### プログラムの実行
ターミナルから

元記事を表示

Rails 6.1.3にアップグレードした後に「undefined method `service_name’ 」のエラーが発生する

# 背景

https://github.com/rails/rails/issues/41750
上記のissueがあるので、プロジェクトのRailsバージョンを6.0.3から6.1.3にアップグレードする必要があります。

“`
bundle update rails
“`

bundleは無事に完成しました。
ただし、サーバーを再起動した後は`image_tag`の部分は「undefined method `service_name’ 」のエラーが発生しました。

# 原因

https://edgeguides.rubyonrails.org/6_1_release_notes.html#active-storage-notable-changes
>ActiveStorage::Blob#service_name column was added. It is required that a migration is run after the upgrade. Run bin/rails app:update to generate that migration.

R

元記事を表示

Rails Server起動後に、Blocked host: ホスト名.vfs.cloud9.ap-northeast-1.amazonaws.comと表示されるときの対処法

症状

cloud9上でRailsをダウンロードして、諸々updateしてrails Serverを起動したところ下記のようなエラーが表示されてしまいました。

Railsチュートリアルを参考にセットアップをしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927880/f08fbe7c-0723-1b1d-f4ca-3c14693712fd.png)

解決方法

dev環境のconfigにcloud9へのアクセスを許可するコードを書いたら、正常に動作するようになりました。

“`ruby:config/environments/development.rb
Rails.application.configure do
.
.
.
# Cloud9 への接続を許可する
config.hosts.clear
end
“`
![image.png](https://qiita-image-store.s3.ap-north

元記事を表示

paizaをやり始めのRuby初学者がググりながら学んだ色々な記述方法

#「動くからいいや」ではなく「可読性」「メンテナンスのしやすさ」が大事

Railsに頼り過ぎていて今までRubyの基本的な文法すら満足に扱っていなかったのだなと痛感させられました。
知っている人からすれば当たり前かもしれませんが、温かい目で見守ってください!
また、もっとこうした方がより実践的だという意見があればコメントで教えていただけると嬉しいです。

##埋め込みRuby

文字列の中にRubyの式や変数を埋め込める。

“`
name = “太郎”
puts “こんにちわ!私は#{name}です!”

=> “こんにちわ!私は太郎です!”
“`

ダブルクォーテーション(””)じゃないとRubyが展開されないので注意です。

##後置if

例えば以下のようなfalse側がいらないif文がある時

“`
if true
“trueでhoge”
end

=> “trueでhoge”
“`

こういう時は以下のように一行で書くことができます

“`
hoge = “trueでhoge” if true
puts hoge

=> “trueでhoge”
“`

元記事を表示

Roo / Ruby on Rails Gem 日本語訳(2)

**今回実務で扱ったRubyonRailのGem`Roo`についてまとめました。
ソースコード: https://github.com/roo-rb/roo**
**前回の投稿の続きです
→[Roo / Ruby on Rails Gem 日本語訳(1)](https://qiita.com/tako_tako/items/6d2aaaa35ccc21fb478e)**
# 投稿動機
**→実務で扱ったGemを復習する
→Githubなどのソースコードにビビらないようになりたい
→将来実務で英語を使いたいので、そのポートフォリオの一環として作成したい**

**また、最後にも記載しますが著作権に関して疎いので、この記事が著作権違反にあたらないと認識して投稿しています。
なので、著作権を侵害するつもりもありませんし、もし著作権違反になるようであればすぐにこの投稿を削除します。**

**I will mention at the end, I am not familiar with copyright, so I am posting this article recognizing

元記事を表示

Rails のトランザクションとコールバックについて

# はじめに
Rails のトランザクションとコールバック処理についてまとめました。
誤り等、ご指摘ございましたらコメントいただけますと幸いです :pray:

# トランザクションとは
トランザクションとは複数の処理においてデータの整合性を保つための機能であり、DBに対するデータ更新の単位とも言えます。
例えば PostgreSQL の場合、`BEGIN TRANSACTION` でトランザクションの開始を宣言し、`COMMIT`(コミット) においてそのトランザクションに含まれていた処理をDBに反映させます。コミットを行うまではトランザクション内の変更を破棄して元の状態に戻すこと(ロールバック)ができます。(一度コミットをしてしまったら基本的に戻すことができないので、SQL的にコミットは緊張感を伴う処理になります。)
複数の処理を実行する際に、「Aの処理は成功したがBの処理は失敗した」みたいな状態がまずい場合( 例:銀行の出金処理と入金処理)、トランザクション内でこの一連の処理を行い一方の処理が失敗した時点でロールバックすることにより、データの整合性をとることができます。

#

元記事を表示

Railsチュートリアルの学習をはじめました

#はじめに

2020年の11月からプログラミング学習を始め、2021年3月27日現在で以下の学習を終えました

###HTML/CSS/JavaScript

– スラスラわかるHTML&CSSのきほん(#書籍)
– HTML&CSSコース中級編(#Progate)
– JavaScriptコース(#Progate)
– テトリスアプリの作成(#Youtube動画を見ながら)

###Ruby/Ruby on Rails
– Rubyコース(#Progate)
– Ruby on Railsコース(#Progate)

###SQL
– SQLコース(#Progate)

###Linux
– 1週間でLIPCの基礎が学べる本(#書籍)
– LIPC LEVEL1,2の学習(#ping-t)

###資格取得

– LPIC LEVEL2
– 基本情報技術者試験(選択問題のマーク忘れにより点数入らず…多分落ちてしまいました)

#学習を進めて思ったこと

これまでTwitterやブログなどでのアウトプットをまったく行わずに学習を進めてきましたが、
今後はしっかりと学習内容をQiit

元記事を表示

モダンな監視ツールSentryをRailsで使ってみた

# はじめに
Rails環境でSentryを導入したので導入手順をまとめました。

以前までは`sentry-raven`というGemが使用されていましたが、こちらがメンテナンスモードに入ってしまい、
現在は`sentry-rails`、`sentry-ruby`への移行が推奨されています。
– [getsentry/sentry-ruby](https://github.com/getsentry/sentry-ruby)
– [Migration Guide](https://docs.sentry.io/platforms/ruby/migration/)

この記事では`sentry-rails`、`sentry-ruby`を使用し進めます。

## Sentryとは?

https://docs.sentry.io/platforms/ruby/guides/rails/

Webアプリケーションで起きたエラー等をロギングできるサービスです。
導入も簡単でUI/UXがGoodなダッシュボードも使えます:dancer:

![スクリーンショット 2021-03-27 11.2

元記事を表示

Ruby on Railsのローカル環境構築

今までRailsアプリの開発環境は全部Dockerで作ってたけど、雑に作って挙動確認したい時とかにいちいちDockerで環境作るの面倒なので、ローカルにもRailsの環境を作っておく。

## 作るもの
– DBはsqlite
– Rubyのバージョンはrbenvで管理

## 前提
– macOS Catalina 10.15.7
– Homebrewが使える
– シェルはzsh

## rbenvをインストール&セットアップ
“`zsh
$ brew install rbenv ruby-build
$ rbenv -v
rbenv 1.1.2
$ vim ~/.zshrc
“`
“`rb:.zshrc
eval “$(rbenv init -)”
“`
“`zsh
$ source ~/.zshrc
“`

## Rubyをインストール
“`zsh
$ rbenv install –list # インストールすることが可能なRubyのバージョン一覧が表示される
$ rbenv install 2.7.2 # Ruby 2.7.2をインストール
$ rb

元記事を表示

attr_writerってどこで使うの?

attr_writerって使い所がわからない。
必要になる場面ではattr_accessor使うから。値を読めないけど更新できるなんて使い方が想定できなくて

元記事を表示

【Ruby】writeメソッドの使い方

#プログラミング勉強日記
2021年3月27日

#writeメソッドとは
 Rubyで指定したファイルを読み込むときに使うメソッド。指定したファイルがない場合には新しくファイルを作成して書き込むが、すでにファイルがあった場合は内容がすべて上書きされる。

“`ruby:書き方
File.write(“ファイル名”,”書き込む内容”)
“`

#サンプルプログラム

“`ruby:sample.rb
# sample.txtのファイルを作成し、「Hello World」を書き込む
File.write(“sample.txt”, “Hello World”)
#文字を書き込んだファイルを開き変数に代入
file = File.open(“sample.txt”)
#コンソールにファイルに書かれた内容を表示する
puts file.read
file.close #ファイルを閉じる
“`

#参考文献
[Rubyのwriteメソッドの使い方を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/50292)
[ファイル

元記事を表示

コントローラの名前空間とルーティングの件

こんにちは、たにーです。

今回は、ルーティングを書く方法でどんななのがあるのか記述していきます。
チーム開発でURLに特定の文字を含めない、グルーピングしないといけないなど
新しいルーティングの書き方を学びました。

知らない書き方もあったことから、記憶に残っている内に
復習すべきと思い、今回記述していくことにしました。

#① 〇〇 => 〇〇#〇〇
urlごとに設定していく記述
おそらくこれは基本かと思います。

“`rb:routes.rb
get ‘homes/top’ => “homes#top”
get ‘homes/about’ => “homes#about”
“`

rails routesで確認。

“`title:terminal
Prefix Verb URI Pattern Controller#Action
homes_top GET /homes/top(.:format) homes#top
homes_about GET /homes/about(.:f

元記事を表示

Dockerコンテナが上手く立ち上がらない時の便利コマンド

# はじめに
Dockerコンテナが立ち上がらない時困らないように忘備録つくりました!

### コンテナ・イメージ一括削除系
“`ruby
# 全コンテナ停止
$ docker stop $(docker ps -q)
# 全コンテナ削除
$ docker rm $(docker ps -q -a)
# 全イメージ削除
$ docker rmi $(docker images -q)

# 上記コマンドをまとめて実施
docker stop $(docker ps -q) && docker rmi $(docker images -q) -f
“`

### 面倒なのでエイリアスコマンドで登録
“`text:エイリアスコマンド登録
$ vi ~/.bashrc

# 登録したいエイリアスコマンドを書く(例)
alias docker-rmi=’docker stop $(docker ps -q) && docker rmi $(docker images -q) -f’

# 保存
:wq

# .bashrcファイル有効化
$ source ~/.bashrc

$ do

元記事を表示

Twitter_Bot 作成③

前回の記事: [Twitter_bot作成②](https://qiita.com/takueha/items/a4f43a582a6e48ce7f6c)

前々回の記事: [Twitter_bot 作成①](https://qiita.com/takueha/items/621db4c41389bd38322a)

前回に引き続きTwitterBot作成の3回目です。

今回で完成になります。

前回の記事で説明させていただいた実装手順は②番まで完了しております。

ですので今回は③番からですね!

頑張ってやっていきましょう!

###データベースから保存したツイートを自動ツイートする機能の実装

では上記の実装を行っていきます!

下記は前回までで作成したtweets_controllerに実装手順③の機能の実装を行ったものです。

実装手順③より下2行が該当部分になります。

~~~ruby
class TweetsController < ApplicationController require 'twitter' before_action :twitter_cl

元記事を表示

Ruby on Railsでエラーメッセージを日本語化する

# 環境
* Ruby 2.6.5
* Rails 6.0.0
* devise 4.7.3

# 日本語化の設定
アプリケーションでのエラーメッセージを、英語から日本語表示にするための設定をします。

## 言語設定

まず、application.rbを編集して`config.i18n.default_locale = :ja`を追加します。
`:ja`は日本語という意味です。
myappの記述は、自分のアプリケーション名と読み替えてください。

“`ruby:config/application.rb
module myapp
class Application < Rails::Application config.load_defaults 6.0 config.i18n.default_locale = :ja # 追加 config.generators do |g| g.stylesheets false g.javascripts false g.helper false g.

元記事を表示

Re:dash APIを利用してRe:dashのお引っ越しする

# 概要
昔雑に立ててたRe:dashから新しいRe:dash環境にクエリをお引っ越しする。

Re:dashを雑に立てた結果さまざまな問題に直面したため新しくRe:dash環境を立ち上げて引っ越すことを決めた。
既存の環境を頑張っていい感じにすることも考えられるが利用者が少ない(私とディレクター1人だけ)&query以外そこまで利用していない背景があり、新しい環境立てて引っ越した方が早いのではと言う試みをしました。

# 成果物
https://github.com/tatematsu-k/redash_transport

# 実現したこと
旧環境のqueryを全て取得し、利用中のものだけ新しい環境に全てインポートする。

本家のドキュメントはGET系はそこそこわかりやすいのですが登録系はだいぶ苦戦しました….

# ポイントだけ
## APIキーの種類
Re:dashの認証には `User API Key` と `Query API Key` のに種類があります。
`Query API Key` はそのクエリのみに限定された権限のAPI Keyになっており、本家のドキュメント

元記事を表示

OTHERカテゴリの最新記事