- 1. TweetAppとは
- 2. つぶやきで、世界はつながる
- 2.1. progate food.rb
- 2.2. progate drink.rb
- 2.3. progate index.rb
- 2.4. menu.rb
- 2.5. AWS SDKの戻り値をDynamoDBに格納する
- 2.6. Deviseの上にacts-as-taggable-on を使ったタグ機能
- 2.7. Railsで404エラーページを設定するとrefileで投稿した画像が表示されなくなる場合の対処法
- 2.8. Rails Tutorial 第6版 学習まとめ 第一章
- 2.9. 【rails】デプロイ時のUglifier::Error: Unexpected token: について
- 2.10. 予測変換を非表示にする
- 2.11. Kinx ライブラリ – Process
- 2.12. rails newしたときにインストールしている最新のRailsバージョンでアプリが作成されない場合の対処法
- 2.13. Rubyを使用してのカレンダー作成
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
endputs “————–”
puts “メニューの番号を選択してください”
order = gets.chomp.to_iselected_menu = menus
menu.rb
require “date”
class Menu
attr_accessor :name
attr_accessor :pricedef initialize(name:, price:)
self.name = name
self.price = price
enddef info
return “#{self.name} #{self.price}円”
enddef 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
endreturn total_price
enddef 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として整数で取得)
・オブジェクト作成後、フォーマットを使用し文字列に変換可