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

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

Bundler が Ruby 2.7 で変な件

Ruby 2.7 で Bundler がらみの不可解な現象に遭遇している。

# 前提

この記事で述べる実験は 2020-01-17 時点のもの。

Ruby 2.6.5 と Ruby 2.7.0 の二つについて実験を行った。

Windows と macOS と CentOS で実験した。
Windows は RubyInstaller for Windows でインストールしたもの。他は rbenv でインストール。

Ruby 2.6.5 も 2.7.0 も,デフォルトの bundler gem は 2.1.2 だが,

“`
gem update bundler
“`

して,bundler 2.1.4 をインストールした。
したがって,どの OS,どの Ruby でも,2.1.2 と 2.1.4 が入った状態。

# 実験 1

まず,OS と Ruby バージョンに関わらず,端末で

“`rb
bundle -v
“`

とやったら

“`
Bundler version 2.1.4
“`

と表示された(当然)。

次に,

“`
gem list bu

元記事を表示

スクリプト言語の比較しながらGoのお勉強 〜 環境構築編(MacOS)

# ごあいさつ
はじめまして。@kuroseetsと申します。
2000年からフリーランスで仕事を始め開発12年、インフラ8年経験してきたオッサンです。
皆さんはどのプログラミング言語、スクリプト言語が好きですか?または仕事などで何をよく使っていますか?
開発をされている方だとJavaが多いのかな?またはC#?Ruby?PHP?
事務系でスクリプトを組む方などはVBScriptなども現役ですよね。
私は現在インフラ運用構築側にいますので、私を含めて周辺でよく使われているのが、Python, Ruby, Perl, Bash辺りが多く、最近ではさらにGolangが増えてきている印象です。(あくまで個人的主観で、ですよ
それぞれ好みはあるとは思いますが、環境や現場による制約で使えるもの使えないものがありまして、私もその都度現場でキャッチアップしてスキルを身に付けてきました。
現在では`Infrastructure as Code`と謳われるだけあって、構成管理の設定ファイル以外でも手を動かすことも増えてきたと身を以て感じています。
今回個人的にGolangを勉強しようと思っているのですが、

元記事を表示

Rails Tutorial 第一章でつまづいたところと参考URL(簡易メモ)

○所要時間
とりあえず一読 → 2:30(現在合計2:30)
一読後手を動かして → 4:00(現在合計4:00)
合計6:30

・cloud9初期設定迷う
→初期設定から変更なしでOK
参考URL:https://note.com/yutsuku/n/ncb752afcc61f

・rails server 起動できない(rails serverが弾かれる)
javascriptをダウンロード(具体的には、vi Gemfile→最後に「gem ‘therubyracer’」を追記)
参考URL:http://yso15.hatenablog.com/entry/2015/03/21/225843

かつ、cd ~/environment/hello_app でディレクトリ の移動後、rails serverを起動。

・rais serverってどうやって開けば(確認すれば)いいの?
ページの表示方法は以下
0.画面上部tools→preview(これ以外下記参考URL引用)
1. $ rails serverでサーバを起動する(上記の結果でOK)
2. 画面上部Preview →

元記事を表示

Rubyのコロン:の位置がわかるようになる記事

RubyやRailsを書いていると:が前に来たり、後ろついたりとてもややこしくありませんか??
というわけで:を前に書く時と後ろに書くときのパターンについて、整理していきたいと思います。

### 後置:パターン。
——
“`test.rb
#ハッシュのキーをシンボルとして定義
hash = { a: 1, b: 2, c: 3 }

#キーワード引数(シンボルとは異なる)を利用するパターン
def my_method(arg1: arg:2)
pp arg1, arg2
end
“`
####以上の2パターンが後置:です。
では前置:のパターンをみていきましょう。
——
#前置:パターン
“`test.rb
#その他はすべて後置:です。
hash[:a] = 4
“`
#なんと上記の2つ以外はすべて後置:です。
こうやって整理してみると意外とシンプルなものですね〜

元記事を表示

ruby 2.7.0 + Rails 5.2.4 + mysql 5.7.28 でDocker開発環境を構築する備忘録

# 流れ

1. Dockerfileを作成
2. docker-compose.ymlを作成
3. Gemfile,Gemfile.lockを作成
4. イメージ・コンテナの作成
5. Rails初期設定
6. Githubにリモートリポジトリ作成

# ディレクトリ構成

“`
application_root/
– Dockerfile
– docker-compose.yml
– Gemfile
– Gemfile.lock
– その他Railsアプリケーションファイル群
“`

# Dockerfileを作成

application_root下に下記のファイルを作成

“`
# イメージのベースラインにRuby2.7.0を指定
FROM ruby:2.7.0
# Railsに必要なパッケージをインストール
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN gem install bundler
# ルートディレクトリを作成
RUN mkdir /app
# 作業ディ

元記事を表示

Railsで起きたRoutingErrorの対処について

RailsでRoutingErrorが起きた。

##今回の対処法

至って問題はシンプルで、<%= %>内のpathに問題があった。

具体的には

“`example.html.erb
<%= link_to "Delete", post_path(@post), method: :delete, data:{confirm: "Are you sure?"}, class:"button is-danger" %>
“`
としないといけなかったところで、

“`example.html.erb
<%= link_to "Delete", edit_post_path(@post), method: :delete, data:{confirm: "Are you sure?"}, class:"button is-danger" %>
“`
としてしまっていた。

##今後の対策
RoutingErrorが起きたら、まずPathを確認する。

元記事を表示

【Tech::Expert】 WindowsでRuby開発 だいぶ 土台が出来てきました

WindowsでRuby開発 だいぶ 土台が出来てきました

・Ruby Installer
環境依存が結構出るかも
テキスト内のインストール方法よりも独自で考察しなければならない

・Docker、Cloud9
上記同様に準備を自分でやらなければならない

・Macをサーバーとしてシェルのみ使用
現在これが最適。
環境のインストールはMacでテキスト通りに行いSSHでアクセス。
エディタ・ブラウザ・ターミナル・メモ帳などは、全て使い慣れたWindows上で行える。

実物 Mac、バーチャルマシン上のMac、両方試した結果、それぞれの感じは ↓

・Mac Book Pro
机の上に出しておくと場所を取るので、クローゼットに仕舞っておき、TeamViewerで遠隔操作
クラムシェルモードのように、蓋を閉じても電源が切れないよう設定
動作は快適だが、今後を考えると、VMの方が有利
端末自体が邪魔なので、Windows内に取り込みたい

・VM上のMac (ハッキントッシュ)
環境の複製が自由自在
スナップショットが取れるので、色々試した後の復元が簡単
色々試してもAppleの

元記事を表示

RubyでLeetCodeを解いてみた Reverse Integer

https://leetcode.com/problems/reverse-integer/

>Given a 32-bit signed integer, reverse digits of an integer.

“`ruby
# @param {Integer} x
# @return {Integer}
def reverse(x)
if x.positive?
y = x.to_s.reverse.to_i
else
y = x.to_s.reverse.to_i*-1
end
return 0 if ( y > 2147483646 || y < -2147483647) y end ``` rubyはover flowの扱いが特殊みたいで 生々しい実装になってしまいました???

元記事を表示

【Rails】SNSアプリのコメント削除機能の実装

参考 URL
https://qiita.com/takahisa_s/items/e6d9713eb9dc0f85f66d
参考も何も理解するには上記の記事を見るだけで十分なのですが、自分用の備忘録として今回の記事を作成いたします。

#前提
私の書いたコメント作成機能の記事の続きです。
https://qiita.com/Zhongcun/items/42b15f045a363ec82af5

また、【削除できるコメントは自分が作成したコメントのみ】とします。

#ルーティング

“`ruby:routes.rb
resources :microposts, only: [:create, :destroy, :show] do
resources :comments, only: [:create, :destroy]
end
“`

#コントローラー
コメント削除ボタンに関わることなので、micropostのコントローラの記述もしておきます。

“`ruby:microposts_controller.rb
def show
@micropost = Mi

元記事を表示

RubyでLeetCodeを解いてみた Two Sum

https://leetcode.com/problems/two-sum/

>Given an array of integers, return indices of the two numbers such that they add up to a specific target.

>You may assume that each input would have exactly one solution, and you may not use the same element twice.

“`
Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
“`

意外とむずいよね

“`ruby
# @param {Integer[]} nums
# @param {Integer} target
# @return {Integer[]}
def two_sum(nums, target)
nums

元記事を表示

ログイン機能の実装(SNS認証機能の追加)

記事保留

元記事を表示

【初心者向け】Rubyの配列を使用して、オリジナル本登録アプリを作ってみた。

#Rubyの配列を使用した学習をします。
配列が便利ということで、配列を使用して、スクールでおそらくやってない配列を使用した本登録アプリケーションを作ります。

#条件

・本の名前を登録
・値段を登録
・booksという配列に、本の名前(title)と値段(price)をいれていく
・登録が済んだら、登録したデータを取り出すメソッドも作成する
・登録、一覧表示を繰り返し表示させられるよう、メソッドを書いていく

今回は擬似コードなしで書いていきます。

“`rb

books = []

def register(books)
puts “本のタイトルを記載してください”
book_title = gets.chomp
puts “本のタイトルを#{book_title}で登録しました”
puts “販売したい値段を記載してください”
price = gets.to_i

books.each do |book_title, price|
puts “#{book_title}を#{price}円で登録しました”
end
book = [boo

元記事を表示

同じテーブル内に複数の外部キーを設定する方法!!

##はじめに
某プログラミングスクールで、担当した実装を復習していきたいと思います。
今回は、出品・取引中・売却済みのこの3つをクリックした際に、それぞれにあった商品を
表示させる実装を行いました。

これを実装するにあたって、1つのテーブル内に複数の外部キーを設定する必要があり、
ここで詰まったため、記録として残していきます。

ちなみにこんな感じの実装をしていきます。
![c0b6f5dcc3487ef71b3605eb6e99ffe0.gif](https://i.gyazo.com/c0b6f5dcc3487ef71b3605eb6e99ffe0.gif)

##工程
今回は、工程を以下に分けて説明をしていきます。
1.実装の大まかな説明とマイグレーションファイルの作成
2.モデルの作成
3.コントローラーの作成
4.hamlでの条件分岐設定
の順で行っていきます。
少し、長いですががんばっていきましょう。

##解説
1.実装の大まかな説明とマイグレーションファイルの作成

はじめに出品中・取引中・売却済みを区別するために、
productというテーブル内に、seller_i

元記事を表示

【第9章】Railsチュートリアル 5.1(第4版) 発展的なログイン機能

#はじめに
筆者は非IT業界から独学でRails学習中で、備忘録目的で執筆しています。
個人的に本章はこれまでの章より難易度が高かったです?(2周目確認・整理が必須と感じました、不足等あれば訂正致しますのでおっしゃっていただければ幸いです)
筆者は[安川さん](https://twitter.com/yasulab)講義の動画版を模写するような形で学んだため、演習でなく全体を流す程度に参考にしてもらえたら嬉しいです。

<参考>
[Ruby on Rails チュートリアル 第9章 永続的セッション(cookies remember me 記憶トークン ハッシュ)を解説](https://qiita.com/bitcoinjpnnet/items/639cbace7cb806379452)
個人的に非常に理解しやすい記事でした。
(Cookieの攻撃手法などは改めて追記したいほどです)

#9.1 Remember me 機能

##Remember me とは
主にアカウント認証に用いられる機能の一つで、ユーザーがログイン時に入力したアカウント情報をサーバ側で持つ(UI視点での)機能

元記事を表示

rspecの始め方

Gemfileに

“`
gem ‘rspec’
group :development, :test do
gem ‘rspec-rails’
end
“`

コマンドラインで

“`
$ bundle install
$ bundle g rspec:install
“`

元記事を表示

Rails.application.credentials.xxxxx[:yyyy]が空になる時の対策

# Rails.application.credentials.xxxxx[:yyyy]
Credentialsもしっかり設定しているし、rails cコマンドではちゃんと読み込める
しかも共同開発してる他のメンバーでは読み込める
でも私のhttp://localhost:3000/ 環境では中身がないとエラーが出る

# 原因
はっきりわかってないけれど、恐らく権限の問題

# 対策
すでにあるmaster.keyを消して、同じ文字列で作り直す

元記事を表示

[Rails]serializeなcolumnのdefault値を空の配列にしたい。

# やりたいこと

“`ruby:migration
class Users < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.integer :id t.string :hoges, null: false, default: [] # これ end end end ``` でもこれじゃ ``` == 20200109052420 Users: migrating ============================ -- create_table(:search_histories) rails aborted! StandardError: An error has occurred, all later migrations canceled: can't quote Array /Users/lyrical_school/project/disappearing_planet/db/migrate/20200109

元記事を表示

ログイン機能の実装(ウィザード形式にするために)

#1.deviseの導入及びユーザーのデフォルトでのログインが可能になるまで
以下の手順で導入

“`GEMFILE.
gem ‘devise’
“`

“`ターミナル.
rails g devise:install
“`
任意のコントローラー(***)を用意して、ルーティングの設定をします。
この場合は、トップページに当たる部分のルーティングの設定をしています。

“`config/routes.rb
Rails.application.routes.draw do
root to: “***#index”
end
“`
“`ターミナル.
rails g controller ***
“`
今回はindexアクションにおいて、特にモデルとのやり取りなどは行わないので、コントローラ内の記述はしません。(任意でトップページのビューは作成したものを使用)

次いでdeviseにおけるデフォルトのログイン機能を実装します。

“`ターミナル.
rails g devise user
“`

今回は、deviseのデフォルトで用意されているemailとpasswordを

元記事を表示

【Rails】簡単にDatetimepickerを使う方法

# はじめに
個人的にオススメなDatetimepickerについて、紹介しようと思います。
導入がめちゃくちゃ簡単です。

# できあがり例
こんな感じで、日付と時間を選ぶと実装することができます。

image.png

個人的にこのdatetimepickerが優れていると感じる点は以下です。

* __はじめからカレンダーと時間が表示されていること__
* __ボタンをクリックする回数が2回で入力ができること__

他のdatetimepickerだと、日付をクリックしないと時間の欄が表示されないため作業量を一瞬で把握できません。
微妙な差ではありますが、ユーザーが少しでも楽な方を考えました。

# 使い方
まず、“`GemFile“`に以下の“`gem“`を記載して、“`bundle inst

元記事を表示

【YAML】Railsのdatabase.ymlについてなんとなく分かった気になっていた記法・意味まとめ

## はじめに
「そういえば、**yaml**って良く使うくせにちゃんと調べたことがないな」
と思い、特徴的な書き方をする機能3つに絞ってまとめました。

[YAMLの公式はこちら](https://yaml.org/)

**Ruby on Rails**で良く使う、`database.yaml`を例に説明します。

## 環境
“`yaml
OS: macOS Catalina 10.15.1
Ruby: 2.6.5
Rails: 6.0.2.1
“`

## そもそも`yaml`って何?
> YAML is a human friendly data serialization
standard for all programming languages.

公式より抜粋しました。

「YAMLは全てのプログラミング言語で使える、人間に優しいデータの書き方だよ!」ということですね。

要するに、**複雑なデータ構造をシンプルに表現するファイル形式**です。

ここから**Ruby on Rails**の`app/config/database.yml`を例に、**他ではあ

元記事を表示

OTHERカテゴリの最新記事