はりうすブログ (のすけのメモ)

湘南にある小さな会社 代表 ”のすけ”のブログです

WSLにRails6環境を構築する方法メモ

Rails6
Rails6

Macでは難なく入ったのですが、、、WindowsのWSLではちょっとてこずったので、現状行ける方法をメモしておきます

【前提】

あらかじめWSLのubuntuが入っているものとします。ない場合はMicrosoftStoreからインスト―ル
Ruby: 2.6.3
Rails: 6.0.2.2
Windows10のWSLを使っていきます

# VSCodeをインストール

VSCodeのリモートがとても便利なので入れていきます。
サイトに行ってダウンロードしてきます
Visual Studio Code – コード エディター | Microsoft Azure

Remote-WSLのプラグインをインストール
起動後に左下の緑の「><」マークからWSLへRemote接続します
接続できたら上のメニューのTerminalからNewTarminalします。

# 準備 これから使うライブラリを入れておきます

> sudo apt-get update
> sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev

# Node.js(最新安定版)のインストール(既に入っている人は不要)

Rails6からはwebpackを利用するためにNode.jsを利用するようになったため
Node.jsもあらかじめ入れておきす

まず普通にインストール

> sudo apt install -y nodejs npm

次にnで入れる

> sudo npm install n -g
> sudo n stable

古いものを削除

> sudo apt purge -y nodejs npm
> exec $SHELL -l

入ったか確認

> node -v

# Rubyバージョン管理システムであるrbenvを入れる

> cd ~/
> git clone https://github.com/sstephenson/rbenv.git .rbenv
> git clone https://github.com/sstephenson/ruby-build.git .rbenv/plugins/ruby-build
> echo 'export PATH=~/.rbenv/bin:$PATH' >> ~/.bashrc
> echo 'eval "$(rbenv init -)"' >> ~/.bashrc
> source .bashrc

# ここからRuby(2.6.3)インストール

> rbenv install 2.6.3
> rbenv local 2.6.3
> ruby -v

使いたいバージョンをローカル登録
.ruby-versionという隠しファイルができます
(そのディレクトリ以下では指定したバージョンのrubyになります)

失敗する場合
aptからrbenvを入れていると古いので2.6系がありません。
git cloneで入れてても失敗している場合はrbenv initあたりが失敗してます。

# sqlite3のインストール(既に入っている人は不要)

> sudo apt install sqlite3
> sqlite3

コマンドリストが表示されればインストール完了

Rails環境を構築する上でsqlite3系の問題はかなり多くて
ネット上に多々解決法が出てますが
突破できず。結局、Ruby2.6.3だとエラーにならないのでオススメ。

# Railsのインストール

> gem install rails
> rails -v

Rails 6.0.2.2

Railsの6.0.2.2がインストールされました。
次にbundlerを入れたいところですがRuby2.6からはbundlerがすでにRuby本体に
入っているためインストールは不要です。

# プロジェクトの作成

> rails new hello_rails

# yarnを入れましょうとでるので入れていきます

> sudo apt install yarn
> cd hello_rails
> yarn

もしyarnと入力して「ERROR: There are no scenarios; must have at least one.」みたいな
エラーを吐いたらyarnを入れなおします(aptのyarnが古いようです)

> sudo apt remove yarn

apt-getのパッケージ情報を更新

> curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
> echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
> sudo apt-get update 

yarnを入れ直します

> sudo apt-get install yarn

マジで長いですね。もう一息です

# webpackerを入れます
これを入れないとrails6は起動しません

rails webpacker:install

# プロジェクトを起動!!

> yarn install
> rails s

rails serverもしくはrails sで起動できます。

localhost:3000をブラウザで開いたら・・・

f:id:hollywis:20200327111955j:plain


いぇええあ!!


ここまでたどり着くのに数々のエラーに逢いました
sqlite3がどうたら、pumaどうたらなど。
コツとしてはMacでうまく動いたRuby2.6.3を入れたことでしょうか。
あんまり最新のRubyを入れるとgemのメンテが追い付いていないのか起動しないことがあります。
あと、何も考えずにaptからインストールすると結構古いことが多く、エラーになること多数なので
本記事のようにところどころapt-get使ったり(apt-getも結構古い)、git pullで持ってきたりが大事です。


それにしてもVScodeとWSLのコラボレーションは本当に便利。
macもいいけどWindowsも中々ですね

あとこの本↓↓↓いい感じです。rails6について纏まっていて

nginxインストール&起動&停止&設定(ubuntu)

インストール

sudo apt-get update
sudo apt-get install nginx

起動

sudo nginx


起動後に
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

みたいになるなら、すでに起動しているかも

ps aux || grep nginx

で起動しているプロセスを確認

終了

sudo nginx -s stop

サービスでの起動&停止

sudo service nginx start
sudo service nginx stop

設定ファイル

設定ファイルの所在地は次で確認できる

sudo nginx -t
sudo vi /etc/nginx/nginx/conf

Server項目をこのように設定して
nginxを再起動するとブラウザでlocalhostで開ける

f:id:hollywis:20200221143751j:plain
Server項目
htmlディレクトリのパスは
/var/www/html

Server項目でrootフォルダとか設定できます。
confを設定変更した後に「sudo nginx -t」で設定ミスがあるかどうか確認するのがミソです。

nginxを再起動するまえに、記載ミスを減らせます。

オススメ本

いままで避けてきたけれど、Apacheからnginxへの移行が余儀なくされて
急いで本屋で購入して、3日で読破&サーバ移管(Apahe->nginx)を実施しました。

なんとなく苦手で避けていたnginxが、この本で全体感が明らかになって
恐れるものがなくなりました。とてもオススメ。

nginx実践入門 WEB+DB PRESS plus

nginx実践入門 WEB+DB PRESS plus

container staton docker ubuntu初期設定メモ

いろいろインストール

apt update

IP系

apt install apt install iproute2

エディタ

/etc/init.d/ssh restart

ssh

apt install openssh-server

locale系

apt install language-pack-ja-base language-pack-ja ibus-mozc
echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
cho 'export LANGUAGE="ja_JP:ja"' >> ~/.bashrc

IPを表示

ip address show

rootパスワード設定

passwd root

QNAP container station固有設定

IPをブリッジにして、インターネットとのIN/OUTできるようにする(QNAP本体と同じセグメントになる)
f:id:hollywis:20200222151946j:plain

sshd起動

sshd_configを変更
nano /etc/ssh/sshd_config

以下をyesに変える
PermitRootLogin yes

sshdを起動。すでに起動しているならrestart
/etc/init.d/ssh start

これでTeratermなどでSSHで入れます

PhpStorm(Intellij)でjavaコマンドを実行するとバージョンが違う

別のターミナルを開くしかなさそうです。

ここで、Issueが出てますが、みんなイライラしています。
intellij-support.jetbrains.com

環境変数(PATH)のJAVA_HOMEが「C:\Program Files\Java\jdk1.8.0_241」になっていても

PhpStormで開くと

openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment (build 11.0.3+12-b304.10)
OpenJDK 64-Bit Server VM (build 11.0.3+12-b304.10, mixed mode, sharing)

cmd.exeで開くと

java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

面倒でもcmd.exeを使うしかない。。

Nuxt.jsでAdobeのTypekitを使う方法

ネットを探しても無かったので載せときます。

サブセットの話

日本語のフォントというのは、アルファベットに比べて文字数が多いため

常用漢字だけに絞ってパッケージングし直したりしているんですが。(サブセット化)


最近ではダイナミックサブセットといって、そのページで使われている文字だけを

動的にサブセットする方法が流行っており、AdobeのTypekitしかり、FontPlusしかりTypeSquareしかりです。


ただ、ちょっと問題があってHTMLで作られたサイトなら簡単なのですが

Vue.jsなどJSによってレンダリングされているサイトの場合は、各社がサンプルで提供している方法では

フォントが適用されません。


なぜなら、JS描画なので、初期ロードのHTMLには何も文字が描画されていなため、0文字のサブセットになってしまうようです。


ダイナミックサブセットと Web フォント提供


JSでのレンダリング後にサブセット化すれば解決

各社ではJSのAPIを用意してくれているので、フォントのロードタイミングを工夫することで解決するというわけです。

結論から言うとこれでいけました。


nuxt.config.js または、各ページのheadセクションでScriptをロード。
「xxxxxxx.js」は自分のtypekitのidが入ります。

head: {
    script: [
      { src:'https://use.typekit.net/xxxxxxx.js'}
}

あとは、各ページのupdatedセクションとかでTypekit.load()を実行してあげます。

updated () {
      try{
        Typekit.load({ async: true });
      } catch(e){
        console.log("[error]load typekit.")
      }
}

これでloadされたタイミングでフォントが切り替わりました。

ネットで検索するとwebfontloaderを使う事例が見受けられますが

ダイナミックサブセットに対応してないようで上手く動きませんでした。

参考

埋め込みコード

2022/06追記

どうやら、上記の方式はもう通用しなくなっており
下記の記事で解説している方法で、いけました。

NuxtでAdobe Fontsを利用する(日本語対応) | eureka

プロジェクト・アリストテレス

googleの収益の根源(生産性を高める方法)を分析したけど
結果ほぼなにも関連がなくて


すごい人材がいるとかでも無くて


唯一あったのが、社員の安心感「心理的安全性」だった。
ってやつ。


googleアリストテレス プロジェクト
rework.withgoogle.com


グーグルが突きとめた!社員の「生産性」を高める唯一の方法はこうだ(小林 雅一) | 現代ビジネス | 講談社(1/4)



だらか、彼らはマインドフルネス(坐禅)とか、精神を安定させる方向も試しているわけだけど。

あと最近あった記事だとこれ
瞑想が子どもたちの成績を向上させてストレスも軽減させることが可能と判明 - GIGAZINE


坐禅って寺なんだけど。


「禅寺」って日本にしかないのは、あまり知られていない。

ティージョブズ坐禅してたというのも、日本の禅マスターに出会ったからで。

仏教はインド発祥だけど、それが中国で熟成されて身体作法としての

「禅」が生まれて。

それが日本に渡った。


その後、中国ではどっかの王様がほぼ寺を壊したから、もはや日本にしか禅寺はないという。。


ちなみに家の近くの鎌倉に多い。無料で坐禅会とかやってる。


ま、なにが言いたいかというとGoogleが科学的に色々分析して

最善策を探っていくと、結構日本にたどり着くよという話。


そんなわけで、いずれGoogleは「武士道」と言い出すんじゃないかなとw

学問のすすめ 現代語訳 (ちくま新書)

学問のすすめ 現代語訳 (ちくま新書)

「Stadia」で禅修行

そうそう


Googleの「Stadia」っていうクラウド配信のゲームプラットフォームを新しく出すらしいけど

どうみても、studyをもじっている。


だから、教育コンテンツを意識しているわけだけど。


マトリックスのネオが最初に学んだやつ知ってる?

あのプラグ指してカンフーをマスターするやつ。


f:id:hollywis:20190830131137j:plain


たぶん、「武士道」を体得するゲームとか創り出すと思う。

あと、VR坐禅とか絶対やると思う。


目の前に「禅マスター」が出てきて、多分一緒に坐禅してくれる。

ジョブズが出てくるかもしれない。


ではまた。

あとカッコイイ日本人になれる下腹重心ONLINEの宣伝も置いときます。
下腹重心商品紹介 – TERAKOYA FRONTIER

新渡戸稲造の「武士道」

「武士道」を読んでいるという話なんだけれど

現代語訳 武士道 (ちくま新書)

これが、とても面白くて。令和でこそ生きる知識だと思う。


日本人はなぜ世界から見ると礼儀正しい人種なのか?

神を信じていないわけだから蛮族になるはずなのに

なぜココまで、まごころある芯の通った精神を持っているのか?

という問いを外国人から度々受けた”新渡戸稲造”さんが分析した結果

それはたぶん「武士道」だというという結論に至り。


それを書にしたためたというもので。

そしたら世界中で読まれる本になったということなのだ。

無宗教について

「宗教なし」というのは、海外の人にとって驚くべきことなのだ。

なぜなら、海外の人は聖書・コーランなどなどの経典から行動規範を学ぶ事で、自分を正し清い生活を送っているわけで
もし、聖書などのルール(経典)がない場合は、好き放題自分勝手に生きるクソな民族になるしかない。


もしくは、経典がない場合は自然を信仰する(アニミズム)方向となり、理知的で文化的な生活は送れるはずがないというのだ。

確かに、ほかの民族をみると自然信仰か、唯一神信仰か、多神教しか見当たらない。

本当に日本は不思議だ?と思っても仕方がないかもしれない。


海外の友達に「君はどんな神を信じているんだい?」という問いに「無宗教」だと答えると。
蛮族扱いされたという話はよく聞く。

日本人自身答えられない、この根底に流れる規範、社会構築方法はなんなのか?
ということを、新渡戸稲造は「武士道」であるとし

そして、この「武士道」は「神道」・「仏教」・「儒教」の中から探り欧米思想との対比を示してくれている。

良く感じていたこと

会社で働いていて感じていたことが、西洋式の合理的な個人評価や、個人の権利を保障する制度、成果論や、欧米思想による組織連携方法を
日本の会社に適用したとき。


どこか冷たい感じがして、しっくりこない。
進んでいるというより、後退している感じがする。

そこまでルールで明文化しなくても大丈夫じゃないの?というところまで明文化することで

窮屈になることが多い。


なぜなのか?

その答えが、「武士道」にあったという訳だ。

THE TEAM 5つの法則 (NewsPicks Book)

THE TEAM 5つの法則 (NewsPicks Book)


最近リンクアンドモチベーションの組織論の本が売れていたが、つまり僕らは日本人なんだから

日本人流にチーム連携しないと、モチベーションあがらないよ!

海外流に引っ張られていたら、いつまでも上手くいかないぜ!!
という話が重要な部分だと思う。


小手先の技ではなくて。


だから、もっと根源的な僕らはなぜそう考えてしまうのか?


・どういう思想にフィットして、どういう思想にノンフィットなのか


ということを理知的に解析していくためにも
・この「武士道」を読んで、ひとりひとりが「武士道」を自覚することができれば

そう。それ!!ってなって。

結果的に凄い組織になるぞ、という希望を感じた。


やっぱ日本すごいと。負けねーと。

武士道はほぼ失われた。でも多分まだある

ただ、残念ながら新渡戸稲造がいた時代でさえ、すでに「武士道」の大半は失われており

復活させねばという流れなわけで

(武士道が発行されたのは1900年のアメリカ)


そこから大戦があり、大正、昭和、平成と時代が移り変わる中で

もはや「武士道」は残り香くらいしかない。


「なんか欧米とは考え方が違うんだよなぁ」

くらいのニュアンスでしか残っていないわけで


でも、逆に言うとそれでも「武士道」は残っているわけで

だから、ギリギリ残っている世代としてルネッサンスしたいなと思った



なんて書いてるけど、

実はまだ読み切ってないので、最後まで読みます。すいません。

そしたら、次は陽明学に行こう