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

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

docker-compose up出でるエラー

#概要
いつものようにDocker-compose upするとサーバーが立ち上がらない。

具体的には、↓こんな感じでエラーが出ている。

スクリーンショット 2020-01-11 23.34.02.png

〈注意すべきポイント〉
**bundler: failed to load command: rails (/usr/local/bundle/bin/rails)
Bundler::GemNotFound: Could not find ast-2.4.0 in any of the sources**

#解決策
**docker-compose build**
で解決!!

#原因(ここ重要!)
原因によっては対処法が変わってくる。
今回の場合は、前回このアプリを利用した時にgemを追加して
bund

元記事を表示

Twitter APIで取得したアイコン画像の大きさを変える【Ruby on Rails】

#はじめに
TwitterAPIの取得にomniauthを使っています。
またomniauthの基本的な使い方については省略しています。
omniauthの基本的な使い方については別記事を参照してください。

###開発環境
Ruby 2.6.1
Ruby on Rails 6.0.1
#Twitterアイコン画像を取得する

“`ruby:app/controllers/twitter_controller.rb
class TwitterController < ApplicationController # 基本的なomniauthの使い方は省略 def twitter auth_hash = request.env["omniauth.auth"] @image_url = auth_hash[:info][:image] end end ``` このままでは**48x48にリサイズされたアイコン画像のURL**を取得してしまいます。 小さい!当然CSSなどで拡大してもボヤボヤになってしまいます。 #大きなTwitterアイコン画像の取得方法 om

元記事を表示

初級者向け アルゴリズムを解説(2)

# 初級者向け アルゴリズムを解説
 これからアルゴリズムについて解説をしていきますが、こちらの解説はプログラミング初級者(「最近プログラミングを始めました!!」向けになります。また数回のシリーズに分けてプログラミングで使用されるアルゴリズムを解説していきます。なお、Rubyを使用してコーディングしています。
※このシリーズは「アルゴリズムを、はじめよう(著:伊藤静香)」を参考にしております。
[シリーズ(1): 初級者向け アルゴリズムを解説(1)はこちら](https://qiita.com/ko5uke/items/7ba4df764057c990b686)

## 定番アルゴリズム
 それでは前回の続きから始めましょう。前回、アルゴリズムは「問題や課題を解決するための手順を表現した考え方やアイディア」とお伝えしましたが、アルゴリズムを大きく分けると、探索・整列・数値計算・文字列検索の4つの種類があります。
 そしてその種類ごとに基本的な処理手順を持っているアルゴリズムがあり、それらが定番アルゴリズムとなります。アルゴリズムの各種類の定番アルゴリズムは次の通りです。(一部抜粋)

元記事を表示

【Rails】 DataTables 検索結果の保持方法

# はじめに
これまでに Rails + DataTable 関連の記事を書いてきましたが、別のページから戻ってきた時に検索結果を保持していて欲しいなどのユーザーの要望があるかと思いますので、そのような細かい設定の変更方法について今回はまとめさせていただきます。

#### 関連リンク
関連リンクを下記に載せておくので、必要であれば参考にしてください。。

* 【Rails】 DataTables 実装方法
* https://qiita.com/syukan3/items/5ac9f0d1b43334b5eb13
* 【Rails】 DataTables 動的にカラムを変更する方法
* https://qiita.com/syukan3/items/83c4ecd351db57911943

# 検索結果の保持方法
次の2つを設定するだけで、検索結果を保持してくれるようになります。

* stateSave
* stateDuration

“`coffeescript:app/assets/javascripts/concern/datatables.cof

元記事を表示

Ruby ぼっち演算子について

# ぼっち演算子とは
早速本題に入っていきます。
ボッチ演算子とはRuby2.3から実装された機能です。
主に`&.`のことを示します。
基本的な使い方は下記のような記述方法です

“`ruby
オブジェクト&.メソッド
“`

レシーバーとしての役割をオブジェクトに対してメソッドを実行した場合にそのレシーバーとしての役割を持つオブジェクトがnillだった場合にエラーが出てしまうのですが、そのレシーバーが空のまま実装したいという時もあると思います。

“`ruby

@nickname = current_user.nickname
“`

このような時です。このcurrent_userはログインしていない時はnillになってしまうのでログインしていないときにこのメソッドが実行されてしまうとエラーになってしまうのですがここでボッチ演算子を使うことでこのからのcurrent_userをnillという表記で出力することができます。`nill`で返すことでエラーが消え、current_userに何も入っていない時でもページを表示することができます。

“`ruby
@nicknam

元記事を表示

DXOpalがマルチタッチに対応しました

このエントリはOpal Advent Calendar 2019の53日目(?)の記事です。

スマホでのマルチタッチに対応したDXOpal 1.4.4をリリースしました。

以下にデモがあります。スマホやタブレットなどのタッチ対応デバイスで開いてみてください。

– https://yhara.github.io/dxopal/examples/multi_touch/index.html

タッチ関係のAPIのまとめを載せておきます。

## タッチAPI(シングル)

– Input.touch_down? : タッチされているかを返す
– Input.touch_push? : タッチされたかを返す
– Input.touch_release? : タッチが離されたかを返す

指一本で操作できるようなゲームを作るときはこっちが便利です。

## タッチAPI(マルチ)

– Input.touches
– `DXOpal::Touch`の配列を返す
– Touchオブジェクトは.id, .x, .y, .dataをもつ。また、.released?で離されたかを返

元記事を表示

自動デプロイ(Capistrano)でエラー mkdir: ディレクトリ `/var/www’ を作成できません: 許可がありません

Capistranoで自動デプロイをしていると、エラーが発生しました

[![Image from Gyazo](https://i.gyazo.com/f7642507c5e1ffe6c8bc8133fdc66d9e.png)](https://gyazo.com/f7642507c5e1ffe6c8bc8133fdc66d9e)

テキストだと下記ですね

“`
mkdir stdout: Nothing written
mkdir stderr: mkdir: ディレクトリ `/var/www’ を作成できません: 許可がありません
mkdir: ディレクトリ `/var/www’ を作成できません: 許可がありません
“`

このエラー”var/www/アプリ名”のディレクトリにしている場合は、パーミッションの問題等だと思いますが、、、

###「 ”var/www/アプリ名”使ってないんですけど!!!
 なんでエラーが出るんだよ!!!
 ”www”が気に食わないから、別のフォルダ名にしてるんですけど!!!
 他の記述も確認したけど、全部”var/www/アプリ名”書

元記事を表示

TECH EXPERT 短期集中_転職コース 70期 2日目の振り返り

1月21日(火)
2日目の振り返り

10〜11時 HTML CSS 振り返り&確認テスト ←ボロボロのため2回やる
11〜11半 朝礼 瞑想5分・ミニドリル15分・メモ書き10分

70期から「超集中」の取り組みをしており、1月21〜23日まで11時40〜18時までポモドーロテクニック ←ググって・・・

11時40分〜18時 Rudyに突入 最初は楽勝と思っていたら、ifあたりから雲行きが怪しくなる。文系の自分を恨みたい。結局頭が終始フワフワして、内容はいらず。

18時〜22時   Rudyをひたすら進めるも、whileあたりで死亡。 カリキュラム進捗率100%をきる。

■反省点
集中し切れていない時間が多々あり、フワフワしていた。
パラシュート勉強法及び60%理解を目指していたら20%理解の上にパラシュートが墜落した。

あと約38日間持つかどうか不安だが、明日はカリキュラムを理解する努力をしたい。

元記事を表示

Rubyのプログラミングスキルを向上させるコツ

##リファクタリングのクセづけ
コードを書き終わったら、必ず、どこかリファクタリング出来ないか研究することをクセづける。

コードが**9行から1行になることもある。**
恐らく、プロのエンジニアには必須スキル!

##テストの開発サイクルについて
1. 先にテストを書いて**失敗させる。**
2. テストが成功するような簡単なテストをひとつ試してみる
3. リファクタリングする。

– [x] 基礎はめちゃくちゃ大事。
– [x] なぜなら基礎的なことはどんなにプロエンジニアになっても、基礎だけは使い続けるものだから。

元記事を表示

MVCとはなんなのか

Ruby on Rails初心者として、自分自身の理解を整理したいのでまとめたいと思います。
何か認識違いがあれば、ご指摘いただければ幸いです。

# MVCとは
UI(ユーザインタフェース)を持つソフトウエアのアーキテクチャの一種。
画面に表示する部分(UI)は、アプリケーション固有のデータや処理の扱いの性質が異なるため、画面の表示とアプリケーションのデータに関する部分を混ぜて記述してしまうと、コードが複雑化してしまい、保守性が悪くなってしまいます。

そこで、アプリケーション固有のデータの部分、画面を表示させるUIの部分、この2つをつなぎ合わせる制御の部分の3つに分けて管理をしやすくしようというものです。

###M(model)
アプリケーション固有のデータや処理の扱いの部分
・データベースへの保存、読み込み、永続化を担当する。

### V(View)
UIに関わる部分
・HTTPレスポンスの中身を実際に組み立てて、画面を表示する。

### C(Controller)
ModelとViewを統合的に制御する部分
・ブラウザからのリクエストを受けて適切なレスポンスを作成するため

元記事を表示

アップロードした画像の有無の判定

#実装したこと
ビューファイルでimageカラムがnilだった時の判定をして表示するビューの切替。
アップローダー:carrierwave
最初は

“`ruby:index.html.haml
– if @user.image.nil?
%p 画像がまだ登録されていません。
– else
= image_tag @user.image
“`

としたところ画像が無くてもPタグの内容が表示されなかった。

binding.pryで中身を確認したとこと

“`shell
[1] pry(#)> @user
=> #
“`

nilだよなぁ。じゃあimageの中身見るか

“`shell
[1] pry(#

元記事を表示

【ruby on rails】button_toを使って情報を送り、paramsで受け取る方法。【いいね機能】

#button_toとは
railsでページ遷移する際、ボタン形式のリンクを作成してくれるものです。
似たようなものにlink_toがあります。

##button_toの書き方(一番簡単な例)

“`html.erb
<%= button_to "ボタン表示文字",hogehoge_path%>
“`
こんな感じで指定したパスに飛べます。

##button_toで情報を送りparamsで受け取る
今回はいいね機能を作成したいときの一例を紹介します

“`html.erb
<%= button_to "いいね",favorites_path(@hoge.id),{params: {id:@nantoka.id}}%>
“`

“`favorites_controller.rb
@favorite = Favorite.new
@favorite.item_id = params[:id]
“`
この書き方で、params[:id]を取得できます。
ポイントはbutton_toの第三引数に{params:{}}として、情報を引き渡すことができるということです。
簡単に使える

元記事を表示

テスト駆動開発から始めるRuby入門

# エピソード1

## 初めに

この記事は一応、Ruby入門者向けの記事ですが同時にテスト駆動開発入門者向けともなっています。

対象レベルによって以下のように読み進められれば効率が良いかと思います。

– Ruby入門者でプログラミング初心者・・・とりあえずコードの部分だけを写経しましょう。解説文は最初のうちは何言ってるかわからないと思うので5回ぐらい写経してRubyを書く感覚がつかめてきてから読み直すといいでしょう。もっと知りたくなったら参考図書にあたってください。と言っても結構お高いので「リーダブルコード」と「かんたんRuby(プログラミングの教科書)」といった初心者向け言語入門書から買い揃えるのがおすすめです。

– Ruby経験者でテスト駆動開発初心者・・・コード部分を写経しながら解説文を読み進めていきましょう。短いステップでテスト駆動のリズムが感覚がイメージしていただければ幸いです。もっと知りたくなったら原著の「テスト駆動開発」にあたってくださいオリジナルはJavaですがRubyで実装してみると多くの学びがあると思います。あと、「プロを目指す人のためのRuby入門」が対

元記事を表示

[rails] 投稿一覧にユーザー情報を表示

#始めに
今回、プロゲートと違う方法で投稿一覧でユーザー情報を表示します。

プロゲートでrailsを終えてからよく、ツイッター風アプリを作成すると思います。
そこで、プロゲートのコードをコピペすることは誰でも出来ますが、
重要なのは**理解して自分でコードを書くこと**だと思います。

他のやり方で表示することが出来たので、参考やヒントになれば嬉しいです。

###完成イメージ
スクリーンショット 2020-01-21 17.00.44.png
※注:デザインは今回しません。また、分かりやすく理解してもらうために**ユーザー情報は名前だけ**にします。

#前提
・usersテーブルと投稿用のテーブル(今回はcommentsテーブル)があること。

#MVC(model/controller/view)の設定
#

元記事を表示

【Rails】enumを使用したセレクトボックスの実装とDBへの保存

# はじめに
都道府県などのプルダウンメニューを作成する際、enumを使いました
これを使うことで都道府県などのデータをわざわざテーブルとして用意する必要がなくなります
便利だったのですが、DBへの保存の際に型が合わないなどの問題も発生したのでまとめておきます

# 環境
Ruby: 2.5.1
Rails: 5.2.4

# 実際の操作
実際の操作は以下のようになります

1. 該当カラムをinteger型で作成
2. モデルにプルダウンメニューで表示させるもの一覧を記載
3. ビューで表示させるプルダウンの記述
4. 入力したフォームの受け取り型を編集

#### 1. 該当カラムをinteger型で作成
下記の場合は都道府県です

“`ruby:schema.rb
t.integer :prefecture, null: false
“`

#### 2. モデルにプルダウンメニューで表示させるもの一覧を記載

“`ruby:models/address.rb
enum prefecture: {
北海道:1,青森県:2,岩手県:3,宮城県:4,秋田県:

元記事を表示

Nokogiriでタグの切り出しがうまくいかないとき名前空間の存在を忘れていませんか?

HTMLやXMLのタグをスクレイビングするときに重宝するNokogiriライブラリは、かなり機能が充実していますが、精通するまで使用するのは難しいです。

ここでは、ライブラリ使用時にハマってしまったことを備忘録としてまとめました。
簡単な使い方が載っているサイトはすぐにたくさん見つかりましたが、後述するハマりポイントが記載されているサイトはなかなか見つかりませんでした。

Nokogiriの詳しい使い方は既に多くの人が分かりやすく説明してくれていますので、そちらを参照ください。

# 一応簡単におさらい

“`sample.rb
require ‘nokogiri’

#①XMLファイルを読み込む
file = Nokogiri::XML(File.read(‘sample.xml’))

#②XMLクラスを作成して、変数に格納する
a = Nokogiri::XML::Builder.new(encoding: ‘utf-8’) do |xml|
#要素の作成
end

“`
②の「要素の作成」については、以下のリンク先を参照すれば詳しく載っています。

元記事を表示

Rails 6+Grapeで作るAPIサーバーにDeviseトークン認証を付ける

# はじめに

iOS・AndroidアプリやWebアプリをクライアントとしたAPIサーバーをRuby on Railsで実装するケースがあります。この記事では、[Grape](http://www.ruby-grape.org/)(REST APIフレームワーク)を利用して作るAPIサーバーに[Devise](https://github.com/heartcombo/devise)(認証機能を提供するgem)を組み合わせ、アクセストークンを介した認証方式を実装する手順を紹介します。

# 同様の紹介事例について

[Devise + Grape で認証付きAPIの実装 – Qiita](https://qiita.com/travelist/items/ec0b08a9a19cbe9ec78b)

上記の記事では本記事と同様に、GrapeとDeviseに加えてトークン認証機能を付加するgemである[devise_token_auth](https://github.com/lynndylanhurley/devise_token_auth)を用いて実装する手法が紹介されています。た

元記事を表示

配列の値をハッシュのキーとバリューに変換する方法

# 配列の値をハッシュのキーとバリューに変換する方法
実務で書かれていたコードでなるほど!というRubyのコードがあったので備忘録としてメモします。

配列のこういう値があったとします。

“` ruby
[“A”, “B”, “C”, “D”, “E”, “F”, “G”]
“`

これをこんな感じでhashのkey_valueに変換したいときにどう実装すればよいでしょうか?

“` ruby
{“A”=>”A”, “B”=>”B”, “C”=>”C”, “D”=>”D”, “E”=>”E”, “F”=>”F”, “G”=>”G”}
“`

## STEP1 配列作成

とりあえず、配列作ります。

“` ruby
hoge = [“A”, “B”, “C”, “D”, “E”, “F”, “G”]
“`

## STEP2 配列のzipメソッド利用してハッシュ化する前に整形する。

配列のzipメソッド利用すると自身と引数に渡した配列の各要素からなる配列の配列を生成して返します。
https://docs.ruby-lang.org/ja/latest/meth

元記事を表示

dotenv のサンプルメモ

bkeepers/dotenv: A Ruby gem to load environment variables from `.env`. https://github.com/bkeepers/dotenv

# サンプル

– 存在しないキーを指定すると `nil` となる
– 実際の環境変数があったらそちらが優先される

“`sh:.env
TEST=”hogehoge”
“`

“`ruby
require “dotenv”
require “pp”

Dotenv.load

pp ENV[“TEST”] # => “hogehoge”
pp ENV[“TEST2”] # => nil
“`

元記事を表示

RailsのDB操作を行うコマンドまとめ

### はじめに
DB操作を行うコマンドというのは`rails db:migrate`などのことです。
コマンドは数が多く、名前から想像しにくい(自分だけ?)ものもあったりするため、備忘録としてまとめておこうかと思います。

最初はスカスカですが、少しずつ充実させていく予定です。
※見栄えも少しずつ整えていきます。。。

■参考サイト(公式GitHub)
https://github.com/rails/rails/blob/v5.2.0/activerecord/lib/active_record/railties/databases.rake

### 環境
– Rails 5.2.0

### コマンド
|コマンド|説明|備考|
|:—————–|——————:|:——————:|
|rails db:create|データベースを作成||
|rails db:drop|データベースを削除||
|rails db:migrate|マイグレートを実行||
|rails db:migrate:reset|データベース

元記事を表示

OTHERカテゴリの最新記事