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

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

sassc を直に使う

Rails や Sinatra などのフレームワークで CSS を編集する人はたいがい Sass 言語で書いていると思う。
フレームワークが全てをやってくれるのであまり意識することは無いが,多くの場合に [sassc](https://rubygems.org/gems/sassc) という gem のお世話になっているだろう[^sassc]。

[^sassc]: 以前は sass という gem が使われていたが,処理を C で実装した高速な sassc に置き換えられていっている。

この記事は,sassc を直接扱うことについて書く。

なお,Sass 言語の構文には,当初から存在した「Sass 構文」と,のちに追加された「SCSS 構文」の二つがあるが,本記事では Sass 構文で例を示す[^notation]。SCSS 構文でも本質的に変わらない。

[^notation]: SCSS 構文が Sass 構文より良い点は「CSS の上位互換」ということしかない気がするが,それでも圧倒的に SCSS が使われているのはなぜだろう?

# 使ってみる

## require

元記事を表示

ブラウザだけでRubyプログラミング: 1ステップずつ作っていく「ブロック崩し」(Nyle-canvas編)

# 概要
この記事は中学高校生向けプログラミング教室の教材として作ったものを一部改変したものです。

ブラウザだけでRubyのゲームプログラミングが始められるNyle-canvasを使って「ブロック崩し」ゲームを作っていきます。
0から少しずつ「ブロック崩し」を作っていきます。Rubyだと完成しても100数十行で「ブロック崩し」ができてしまいます。

![blocks_anime.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26536/c0a9c1e2-9557-b30d-5d3e-fda51cd2c06d.gif)

# 技術解説
## ソースコード
https://github.com/noanoa07/nyle-canvas-blocks

## 使用ライブラリ
– Nyle-canvas(DXRubyスタイル)

https://spoolkitamura.github.io/nyle-canvas/

ブラウザ上で動くRubyエディタ・実行環境一体型の統合開発環境なので、Rubyのイ

元記事を表示

home.scss

/* reset ================================ */
* {
box-sizing: border-box;
}

html {
font: 100%/1.5 ‘Avenir Next’, ‘Hiragino Sans’, sans-serif;
line-height: 1.7;
letter-spacing: 1px;
}

ul, li {
list-style-type: none;
padding: 0;
margin: 0;
}

a {
text-decoration: none;
color: #2d3133;
font-size: 14px;
}

h1, h2, h3, h4, h5, h6, p {
margin: 0;
}

input {
background-color: transparent;
outline-width: 0;
}

form input[type=”submit”] {
border: none;
cursor: pointer;
}

/

元記事を表示

about.rb

TweetAppとは

SNSサービスです。
近況やつぶやきを投稿し、他のユーザーと楽しくコミュニケーションできます。

元記事を表示

routs.rb

Rails.application.routes.draw do
get “/” => “home#top”
get “about” => “home#about”
end

元記事を表示

home_controller.rb

class HomeController < ApplicationController def top end def about end end

元記事を表示

top.html.erb

つぶやきで、世界はつながる

今の気持ちをつぶやいてみよう!

元記事を表示

progate food.rb

require “./menu”

class Food < Menu attr_accessor :calorie def initialize(name:, price:, calorie:) super(name: name, price: price) self.calorie = calorie end def info return "#{self.name} #{self.price}円 (#{self.calorie}kcal)" end def calorie_info return "#{self.name}は#{self.calorie}kcalです" end end

元記事を表示

progate drink.rb

require “./menu”

class Drink < Menu attr_accessor :amount def initialize(name:, price:, amount:) super(name: name, price: price) self.amount = amount end def info return "#{self.name} #{self.price}円 (#{self.amount}mL)" end end

元記事を表示

progate index.rb

require “./food”
require “./drink”

puts “日曜限定100円割引セール実施中!”

food1 = Food.new(name: “ピザ”, price: 800, calorie: 700)
food2 = Food.new(name: “すし”, price: 1000, calorie: 600)
drink1 = Drink.new(name: “コーラ”, price: 300, amount: 500)
drink2 = Drink.new(name: “お茶”, price: 200, amount: 400)

menus = [food1, food2, drink1, drink2]

index = 0
menus.each do |menu|
puts “#{index}. #{menu.info}”
index += 1
end

puts “————–”
puts “メニューの番号を選択してください”
order = gets.chomp.to_i

selected_menu = menus

元記事を表示

menu.rb

require “date”

class Menu
attr_accessor :name
attr_accessor :price

def initialize(name:, price:)
self.name = name
self.price = price
end

def info
return “#{self.name} #{self.price}円”
end

def get_total_price(count)
total_price = self.price * count
if count >= 3
total_price -= 100
end

# if文を作成してください
if count >= 1 && Menu.is_discount_day?
total_price -= 100
end

return total_price
end

def Menu.is_discount_day?

元記事を表示

AWS SDKの戻り値をDynamoDBに格納する

“`ruby
require ‘aws-sdk’
sts = Aws::STS::Client.new
ddb = Aws::DynamoDB::Client.new
ddb.put_item({
table_name: “anytable”,
item: sts.get_caller_identity.to_h.transform_keys(&:to_s).transform_values(&:to_s)
})
“`
AWS SDKの戻り値は(ほぼ全て?)Struct型なので、そのままではテーブルに格納できません。ハッシュ化し、さらにハッシュのキーと値を文字列化することで格納できます。

元記事を表示

Deviseの上にacts-as-taggable-on を使ったタグ機能

gemインストール

“`
gem ‘acts-as-taggable-on’, ‘~> 6.0’
bundle install
“`
テーブル作成

“`
$ rake acts_as_taggable_on_engine:install:migrations
$ rake db:migrate
“`
タグ保存
タグを付けたいモデルに以下のように追記する。(今回は Post モデルにタグを付けたかったので post.rb に記述)
modelフォルダから

“`
class Post < ApplicationRecord acts_as_taggable end ``` registration editで以下を追加 ```

<%= f.label :tag_list %>
<%= f.text_field :tag_list, value: @user.tag_list.join(","), class:"form-control" %>

“`
スペースなどで区切りたい場合

元記事を表示

Railsで404エラーページを設定するとrefileで投稿した画像が表示されなくなる場合の対処法

## 概要
Railsで404のエラーページを作成した場合のみ、refileで投稿した画像が表示されなくなる。
エラーページのコードをコメントアウトすると画像は表示される。

404エラーページのためのコードは下記の通り。

“`ruby:application_controller.rb
unless Rails.env.development?
rescue_from Exception, with: :render_500
rescue_from ActiveRecord::RecordNotFound, with: :render_404
rescue_from ActionController::RoutingError, with: :render_404
end

# viewsでerrorディレクトリを作りそこに404.html.erb/505.html.erbを作成する
def render_404
render ‘error/404’, status: :not_foun

元記事を表示

Rails Tutorial 第6版 学習まとめ 第一章

##概要
この記事は私の知識をより確実なものにするために解説記事を書くことで理解を深め
勉強の一環としています。稀にとんでもない内容や間違えた内容が書いてあるかもしれませんので
ご了承ください。
できればそれとなく教えてくれますと幸いです・・・

##MVCとは
MVCとは
Model View Controller を略したものである

![MVCアーキテクチャの概念図](https://railstutorial.jp/chapters/6.0/images/figures/mvc_schematic.png “MVCアーキテクチャの概念図”)

図の通りブラウザからリクエストがあるとコントローラがリクエストを受け取り
必要なデータはモデルを通してデータベースを照会し、Viewを出力することでページを表示する

##ルートルーティングの設定

config/routes.rb 内に

“`root ‘controller_name#action_name’“`

と記述することで指定したコントローラーのアクションをルートURLとして参照する 

###演習

1.appli

元記事を表示

【rails】デプロイ時のUglifier::Error: Unexpected token: について

#はじめに

デプロイ時にでたエラー
`Uglifier::Error: Unexpected token:`

の解決方法を記載しておきます

#解決方法

“`ruby:config/environments/production.rb
config.assets.js_compressor = :uglifier
“`
上記の記述を下記の記述に編集します⬇︎

“`ruby:config/environments/production.rb
config.assets.js_compressor = Uglifier.new(harmony: true)
“`

編集したらコミットプッシュを忘れずに!

以上で解決できました。

元記事を表示

予測変換を非表示にする

##フォームの予測変換機能をオフにする
問題を解くアプリを作成しているときに、フォームに文字を打ち込むときに予測変換が出てしまい、答えが事前にわかってしまうケースがあったため調べた。
##結果
<input>のautocomplete属性をoffにすると予測変換が消えるみたいです。
`autocomplete: ‘off’`
予測変換のことをオートコンプリートと言うと。

“`ruby:form.rb
<%= text_field_tag "word#{word.id}","", {class: 'form-control',autocomplete: 'off'} %>
“`

元記事を表示

Kinx ライブラリ – Process

# Kinx ライブラリ – Process

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。言語はライブラリが命。ということでライブラリの使い方編。

今回は Process です。子プロセス起動とかやっぱり必要ですよね、ということで急遽こしらえました。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。

## System.exec()

昔から標準で用意していたコマン

元記事を表示

rails newしたときにインストールしている最新のRailsバージョンでアプリが作成されない場合の対処法

`rails new`を実行したときにインストールしているRailsの最新バージョンでアプリが作成されず、どハマりしたので投稿します。

## はじめに
バージョンを指定せずに`rails new`すると、インストールしているRailsの最新バージョンでアプリが作成されます。
が、私が遭遇したのは`rails new`すると最新版ではなく、古いバージョンでアプリが作成されるという現象でした。しかもそのバージョンは`gem list`コマンドでも表示されないバージョンでした。。

## 問題の原因
先に原因を書くと、環境変数の設定に問題がありました。

`/usr/local/bin`が`/Users/user_name/.rbenv/shims`より先に定義されており、`$PATH`は先に書いたほうが優先されるため、`/usr/local/bin/rails`が使われたことが原因でした。
つまり、rbenvで管理されているRailsのバージョンではなく、macにインストールされているRailsが参照されていました。

“`
$ echo $PATH
/usr/local/bin:(中

元記事を表示

Rubyを使用してのカレンダー作成

Ruby学習のアウトプットとして行おうとしましたが、
正直手も足も出なかったので回答例を見て、
読み解く作業をおこなうこととしました。

その記録です。
「プロを目指す人のためのRuby入門」で学習を進めていますが、
まだまだ落とし込みが足りないようです。。。

・回答例
https://qiita.com/sackey_24/items/8fc236bb054aff6b74c8

・参考サイト
https://www.javadrive.jp/ruby/date_class/index5.html

#コードごとで読み解き

回答見てもわかるところもあれば初見のところもあったので、
そちらを中心にまず調べて見ました。

どちらにしてもDateクラスを理解しないことには始まらなそうです。。。
###Dateクラス
・Timeクラスは組み込みライブラリーだが、Dateクラスは違うので、”require”で呼び込む。
・主要メソッドは、day・mouth・year・wday(それぞれ整数で取得。wdayも日曜日を0として整数で取得)
・オブジェクト作成後、フォーマットを使用し文字列に変換可

元記事を表示

OTHERカテゴリの最新記事