- 0.0.1. 2つの配列からhashを作る方法
- 0.0.2. RubyのArrayクラスのメソッドをたくさん使ってみた
- 0.0.3. 【Rails】ES6が原因でHerokuへのデプロイ失敗 Uglifier::Error: Unexpected token:~
- 0.0.4. Rubyでもalgebraic effectsがしたい!
- 0.0.5. jqueryで追加された要素に対してイベントを設定するのにつまづいたこと。
- 0.0.6. 【初心者】なるほどわからん。Rubyまとめ
- 0.0.7. 【初心者】メソッド一覧
- 0.0.8. D – Coloring Edges on Tree
- 0.0.9. テストから考えるプログラムの役割と構造
- 0.0.10. おれのYoutube学習サポートアプリになりゃあ#3
- 0.0.11. rails twitter風アプリで「いいね」機能を追加
- 1. 目的
- 2. 環境
- 3. 1.データモデルの構造
- 3.0.1. 自動ログイン(Remember me)機能を実装する
- 3.0.2. おれのYoutube学習サポートアプリになりゃあ#2
- 3.0.3. おれのYoutube学習サポートアプリになりゃあ#1
- 3.0.4. Spotify API の簡単な使い方-ログイン機能-
- 3.0.5. RuboCopを導入してみる
- 3.0.6. 【Rails】Ransackのcollection_check_boxesで、checkboxタグに任意のクラスを指定する
- 3.0.7. ActiveRecord::Type::Boolean#cast の返り値について
- 3.0.8. Rubyで九九表を作ってみた
- 3.0.9. 【Mac】bundle installでmysql2が入らないときの対策コマンド
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
#回答
“`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**(投稿用モデル)
→content1.データモデルの構造
データモデルの**構造**は、ユーザをフォローする機能と少し似ています。簡単に言うと、**「いいね」**をする**”誰か”**が
**”どのマイクロポスト”**に**「いいね」**したかを管理するモデルを追加すればいいんです。
このデータモデルを実装するために、マイグレーションを生成します。“`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.sizeputs (“+” + “-” * 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 1make failed, exit code 2