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

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

2つの配列からhashを作る方法

仕事で2つの配列を組み合わせて配列型を作るにはどうすればいいんだと悩んだので、シェアします。

もっとより良い書き方があったら教えて頂ければ幸いです。

“`ruby
numbers = [1,2,3]
words = [‘apple’,’banana’,’grape’]

numbers.zip(words).to_h
=> {1=>”apple”, 2=>”banana”, 3=>”grape”}
“`

元記事を表示

RubyのArrayクラスのメソッドをたくさん使ってみた

Rubyで配列を操作していた際に、知らないメソッドがたくさんあったので片っ端から調べて見ようと思った。

Arrayクラスのメソッド一覧を表示する

“`
p array.methods
“`

Arrayクラスのメソッド一覧

“`
[:each_index, :join, :rotate, :rotate!, :sort!, :sort_by!, :collect!, :map!, :select!, :keep_if, :values_at, :delete_at, :delete_if, :to_h, :reject!, :transpose, :assoc, :include?, :fill, :uniq!, :rassoc, :flatten, :compact, :flatten!, :shuffle, :sample, :permutation, :combination, :repeated_permutation, :shuffle!, :compact!, :product, :repeated_combination, :bsearch_index, :b

元記事を表示

【Rails】ES6が原因でHerokuへのデプロイ失敗 Uglifier::Error: Unexpected token:~

## はじめに
RailsアプリのHerokuへのデプロイにおける`Uglifier::Error: Unexpected token:~`というエラーに対する解決方法を記載します。

## 環境
– macOS Catalina 10.15.1
– zsh: 5.7.1
– Ruby: 2.6.5
– Rails: 5.2.4
– Docker: 19.03.5
– docker-compose: 1.24.1

## エラー内容
“`ruby
Uglifier::Error: Unexpected token: name (任意の内容). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
“`
「ES6を使うには`Uglifier.new(:harmony => true)`で`harmony mode`を有効にしてね」とのこと。

**Uglifier**はJavaScriptの圧縮をしてくれるgem。ただES5までしか対応していません。

## 解決策

元記事を表示

Rubyでもalgebraic effectsがしたい!

# はじめに
これは[Ruby advent calendar 2019](https://qiita.com/advent-calendar/2019/ruby)の7日目の記事です。

こんにちは、びしょ~じょです。
Ruby全然書かないけどふとした理由でRubyのライブラリを作りました。
それがこちら。
[Nymphium/ruff: ONE-SHOT Algebraic Effects for Ruby!](https://github.com/Nymphium/ruff)
このライブラリはone-shot algebraic effectsを提供します。

本記事では、このライブラリの使い方、競合ライブラリとの比較、なぜRubyで書いたかについて触れたいと思います。

# Algebraic Effectsってなんだ
Algebraic Effects(またはAlgebraic Effects and Handlers, Algebraic effect Handlers, 和訳だと代数的効果(と勝手に筆者がつけてます))は最近流行りの言語機能です。
React Hooksの開

元記事を表示

jqueryで追加された要素に対してイベントを設定するのにつまづいたこと。

# はじめに
プログラミングスクールの課題で、Railsを用いたチャットアプリを作成した際にjavascriptの処理で詰まったことがあったので、同じことで悩んでいる人もいるのではないかと思い記録に残します。

# 行なった内容
チャットグループを作成または編集する際、インクリメンタルサーチでユーザーの検索を行い、出現した名前の[追加]ボタンを押すことでメンバー一覧の箇所に選択したユーザーの名前が表示されるという流れを実装した。
![chatspace_search.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433361/4bcbc45d-355d-b29d-f60f-fff258bd6cfd.gif)

# 環境
Rails 5.0.7.2
Ruby 2.5.1

# 詰まってしまった内容
上記のGifは正常に動作している状態なのですが、私は下の状態になってしまい困り果てていました。
![chatspaceerror.gif](https://qiita-image-store.s3.ap-nor

元記事を表示

【初心者】なるほどわからん。Rubyまとめ

勉強の忘備録に。日々更新していきます。

#配列とハッシュの違い

###【配列】

“`配列.rb

fruits = [“りんご” ,”みかん” ,”バナナ”]

puts fruits[1]

“`

変数内に複数要素を含める事が出来る。
順に並べた文字列から指定した番号を取得する事が出来る・。
この例で言うと[0]ならりんご、[1]ならみかん。[2]ならバナナ。

**\\番号は「1」ではなく「0」からになるから注意!!!!//**

###【ハッシュ】

“`ハッシュ.rb
data = {}

“`
空のハッシュを生成する。
左のdataは変数名なので変えるのは自由。

**\\配列との大きな違いは値を単純に並べるのではなくてキーとセットに出来る事!!!!//**

“`ハッシュ取り出す.rb

lovefruits = {“fruits” => “りんご”, “taste” => “美味しい”}

puts lovefruits

“`
ここで言う「apple」がキー、「りんご」が値。
キーと値は必ずセットになる。並べる場合は配列と同じく「,」で区切る。配列

元記事を表示

【初心者】メソッド一覧

###resources メソッド

“`使用例.rb
Rails.application.routes.draw do
resources :posts
end
“`

###form_with メソッド
Rails 5.1というバージョンから推奨されている、
フォーム実装のためのヘルパーメソッド。

**■特徴**
1.form_withで自動でパスを選択してくれて、HTTPメソッドを指定する必要を無くす
2.コントローラーから渡された、ActiveRecordを継承するモデルのインスタンスが利用する事ができる
3.form_withではinputタグを使用しない

###redirect_to メソッド
“`
redirect_to “リダイレクト先のパス”
“`
コントローラー等での処理が終わった後に、アクションに対応するビューファイルを参照せずに、別ページへリダイレクトさせる為のメソッド。

##updateメソッド
“`記入例.rb
def update
post = Post.find(params[:id])
post.update(p

元記事を表示

D – Coloring Edges on Tree

2日かけてできませんでした〜〜〜〜!!!!泣

#問題
https://atcoder.jp/contests/abc146/tasks/abc146_d
スクリーンショット 2019-12-06 19.45.33.png

#回答
“`ruby
N = gets.to_i
A,B = (N-1).times.map{gets.split.map(&:to_i)}.transpose
C=Array.new(N-1,0)
list=Array.new(N).map{Array.new}
for i in 0..N-2
for j in 1..N
if list[A[i]-1].include?(j)
next
end
if list[B[i]-1].include?(j)

元記事を表示

テストから考えるプログラムの役割と構造

## はじめに

Railsを始め、**フレームワーク**を利用すると良くも悪くも「プログラムの構造」に対して縛りが発生してきます。
しかしながら、Railsが好まれ・利用されている背景などを考えてみると、この`構造が縛られる`ということがむしろ好意的に受け取られているのではないかと考えてます。

つまり、何を言いたいかと言うと。。。

 **プログラムの構造を1から考えることは難しい**

プログラムの構造を考えるにあたり、`役割`を意識することが多いと考えてます。
その際に大きな問題になるのが**抽象化**と**共通化**の問題。

よく言われるのは、**共通化するな抽象化しろ**ということかなと思います。
では、どこまでが**共通化**で、どこからが**抽象化**なのか。

今回は`テスト`に焦点を当てることで、該当箇所が**抽象化**できているのか?を考えていくアプローチについて書いていければと思っています。

## なぜテストに焦点を当てたのか

答えは単純明快

 **テスト時に自分考えた構造がおかしいことに気づいたから**

これだけでは説明不十分なので、少し掘り下げて考

元記事を表示

おれのYoutube学習サポートアプリになりゃあ#3

#サイトモックアップを作ろう!!

今回は、Balsamq Mockups3 を使いました!!!

https://gyazo.com/94e5106652ef841cba7d502f9d150ed3
https://gyazo.com/3e8348c38d151566ad2da1f8b9d741b2
https://gyazo.com/3756412c31f5f93e0d0b559d82d94f60
https://gyazo.com/c81a84ea5a97202e5f7e209efd77000f
https://gyazo.com/ea2e6a38e482a70e3925484cf7b71b66
https://gyazo.com/386d2d308cfd0aec8c7a64bcc4fbd599
https://gyazo.com/cb5669b3c810ff464a33680fe08419d7
https://gyazo.com/fa327e88d88c0224febef2d59e81c9de

こんな感じです。細かいとこは今後変わるかも。

#DB設計をしよう!!
その前にサ

元記事を表示

rails twitter風アプリで「いいね」機能を追加

目的

railsにて、オリジナルのSNSアプリ(「Kuishare」 URL:https://kuishare.herokuapp.com)
に「いいね」機能を追加します。

ここでいう「いいね」機能はtwitterの「いいね」と同じ意味合いです。

環境

rails 5.1.6

**「いいね」機能**に関与するモデルの現在の**構造**(今回関与しない属性は省略します)
**User**(ユーザー情報用モデル)
→name
**Post**(投稿用モデル)
→content

1.データモデルの構造

データモデルの**構造**は、ユーザをフォローする機能と少し似ています。簡単に言うと、**「いいね」**をする**”誰か”**が
**”どのマイクロポスト”**に**「いいね」**したかを管理するモデルを追加すればいいんです。
このデータモデルを実装するために、マイグレーションを生成します。

“`ruby
$ rails generate model Like user_id:integer post_id:integer

元記事を表示

自動ログイン(Remember me)機能を実装する

[TODOアプリ](https://qiita.com/d0ne1s/items/5e63dde992f20f25b8bb)に、自動ログイン機能を追加します。

[以前の記事](https://qiita.com/d0ne1s/items/7c4d2be3f53e34a9dec7)で、sessionメソッドを使ってユーザーIDを保存しましたが、この情報はブラウザを閉じると消えてしまいます。

毎回ログインし直すのは少し不便なので、ログインフォームの「**Remember me**」チェックボックスにチェックをしてログインした場合には、再訪時に自動でログインできるように修正していきましょう。

##処理の流れ
1. 「Remember me」にチェックを入れてログインした時、**記憶トークン**(ランダムな文字列)と**記憶ダイジェスト**(記憶トークンをハッシュ化したもの)を作成

2. 記憶トークンと暗号化したユーザーIDを**cookieに保存**し(有効期限20年)、記憶ダイジェストを**DBに保存**する

3. Sessonの無いユーザーがサイトを訪問した時、cookieに

元記事を表示

おれのYoutube学習サポートアプリになりゃあ#2

#開発前に 手順① 最小の完成形のために必要な機能は?

・ユーザー登録

・Youtubeの動画閲覧

・動画保存機能

・ノート機能

・タグ付け機能

・タグ、ワード検索機能

・webとios のデータ共有機能。

今回は初めてのアプリ制作なので、このくらいにとどめておきます。
 
##次に手順② ①を含み、自分のイメージに近いサービス調査

読書メーター
https://bookmeter.com/

・ユーザー登録機能
・ノート?(コメント)機能
・タグ付け機能
・amazon検索機能(ワード)
・保存機能(本)
・iOS連動機能

いよいよ次からはモックアップ作成します!

元記事を表示

おれのYoutube学習サポートアプリになりゃあ#1

#目標
ruby on rails とswift とview.jsを使ってwebとiOSで動作するアプリを作る。

##開発手順
① 最小の完成形のために必要な機能(PC、スマホによる Youtubeを用いた学びの垂直統合のために必要最低限なもの)を把握

② ①を含み、自分のイメージに近い他サービスの調査(UI.どんな機能を入れているか)。google,github を使うこと。

③ サイトモックアップを書き出す

④ 入力、遷移、情報表示 に関して明記( 5W1H)

⑤ 最小限の完成形を改めて定義→取捨選択

⑥ サイトマップの作成

⑦ ワイヤーフレームの作成

⑧ データベース設計

⑨ 開発のマイルストーン作成(必要タスク、稼働可能日数、タスクの優先順位)

参考 

作りたいWebアプリのアイディアを迷走せずに作る方法。まず、エディターを閉じることから始めよう

(個人開発アプリのサーバーサイド環境を金と時間をかけずに用意する方法)
https://qiita.com/kazu0620/items/20ea8cd1c3a2e3bb5574

サイトマップ作成

元記事を表示

Spotify API の簡単な使い方-ログイン機能-

#RailsとJsでSpotifyAPIをたたいてみる

###環境・前提条件
ruby 2.6.2
rails 5.2.4

###この記事に書いてあること
– ユーザーを認証し、ユーザーデータにアクセスするための承認を取得する
– Web APIエンドポイントからデータを取得する。
下記のURLはSpotifyAPIの公式ドキュメントです。公式ドキュメントとやっていることは同じですが、この記事ではわかりやすく進行していきます。

###参考URL
公式ドキュメント
https://developer.spotify.com/documentation/web-api/quick-start/
公式github
https://github.com/spotify/web-api-auth-examples

###この記事でできること
アプリのログイン→Spotifyログイン

![giitaよう.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/470271/c0b8dac5-5300-7ac8-

元記事を表示

RuboCopを導入してみる

# TL;DR
この記事はこの記事は[RUNTEQ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/runteq) 6日目の記事です。
今回はRubyのコード解析ツールRuboCopを導入しようとする時の設定について紹介します。
# 対象読者
RuboCopを導入してみようと考える初心者
## はじめに
RuboCopはディレクトリ直下に設定ファイル(.rubocop.yml)をおくことで使用できます。
.rubocop.ymlをおいたらGemfileに,

“`Gemfile
group ‘development’ do

gem ‘rubocop’, require: false
end
“`
と記載して, bundle installを行えばもう完了です。

RuboCopでは.rubocop.ymlの設定に応じて, 
以下の5つに関して指摘が行われます。
こうしたコードのチェックルールのことを「cop」と呼んでいきます。

– LayOut (レイアウトに関するCop)
– Lint

元記事を表示

【Rails】Ransackのcollection_check_boxesで、checkboxタグに任意のクラスを指定する

チェックボックスでAjax制御しようとして、クラス名を付与しようとしたところ、collection_check_boxesだと普通にやってもクラス指定できなかったので、色々ページを巡回し、ようやく海外ページのフォーラムで手がかりを発見したのでメモ。

やりたいこと。テーブル値@regionsでチェックボックスを作成し、class名、`chkgroup`を付けたい。
#駄目な例
“`html.erb
<%= search_form_for(@q , :id=>‘city-form’, :remote => true ) do |f| %>
<%= f.collection_check_boxes :regions_in, @regions, :id, :name, class : 'chkgroup' %>
<% end %>
“`

Chromeで開発画面を見ても、クラス名は何も表示されていません。そこで色々と巡回していると、[こんなページ](https://stackoverflow.com/questions/24770491/style-rails-collection-c

元記事を表示

ActiveRecord::Type::Boolean#cast の返り値について

API などでクライアント側から渡ってきた `”true”`、`”false”`、`1`、`0` などの値を、 Ruby の `true` や `false` として扱いたいときがある。
Ruby では `false` と `nil` 以外の値はすべて `true` として扱われるため、`!!` を先頭につけたとしても実現できない。

“`rb
!!nil #=> false
!!0 #=> true
!!’false’ #=> true
“`

そのようなときには `ActiveRecord::Type::Boolean#cast` を使う。

“`rb
ActiveRecord::Type::Boolean.new.cast “true” #=> true
ActiveRecord::Type::Boolean.new.cast 0 #=> false
“`

しかしながら、どんな値でも `true` か `false` にしてくれるわけではない。

“`rb
ActiveRecord::Type::Boolean.new.cast nil #=> nil
Ac

元記事を表示

Rubyで九九表を作ってみた

今回は、もう少し基礎に返って九九表を生成してみた。

##仕様要件
・テーブルになるようにする。横幅はどこのセルも同じ大きさにする。
・縦横の見出しはなし。そのまま値が表になっているものをつくる。
・出来るだけコンパクトな構文にする。

##実際に書いてみた
“`ruby:table_of_tables_99.rb

# Cell setting
x_line = 9
y_line = 9
size = (x_line * y_line).to_s.size

puts (“+” + “-” * size) * x_line + “+”

# Y line is output
(1..y_line).each do |y|

# X line is output
(1..x_line).each do |x|
print “|%#{size}d” % (x * y)
end
puts “|\n” + (“+” + “-” * size) * x_line + “+”

end

exit
“`

“`command:実行結果
+–+–+–+–+–+–+–

元記事を表示

【Mac】bundle installでmysql2が入らないときの対策コマンド

## ◆現象
bundle installをすると次のようなエラーが出てmysql2が上手く入らない。

“`
〜省略〜
current directory: /Users/hogehoge/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/mysql2-0.5.2/ext/mysql2
make “DESTDIR=”
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

元記事を表示

OTHERカテゴリの最新記事