ラベル WSL の投稿を表示しています。 すべての投稿を表示
ラベル WSL の投稿を表示しています。 すべての投稿を表示

2020年6月5日金曜日

VS Code のターミナルで Ctrl+K

Visual Studio Code のリモートWSLを使っていて、内蔵ターミナルでカーソルから行末まで削除のつもりで Ctrl + K を押すと、VS Codeのショートカットキーとして認識されてしまい動作しない。

解決策

設定で「Terminal > Integrated: Allow Chords」をOFFにすることで、ターミナルのキーバインドとして動作させることができた。

設定画面のスクリーンショット

2019年9月15日日曜日

WSL上のpostgresqlをアンインストールして再インストール

なんかどうも違うバージョンを指しているのか何なのか上手くいかないので…
(正確なメッセージをとっておくのを忘れてしまいましたが、psql -V とやるとpostgresql 11 をインストールしているはずなのに10.Xのバージョン番号が出てしまう状態でした。)

sidemt@PC:~$ psql postgres
psql: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

WSL上のpostgresqlをアンインストールして再インストール

【参考】
完全にubuntuでpostgresqlをパージして再インストールするには? - コードログ
上記の元記事: How to thoroughly purge and reinstall postgresql on ubuntu? - Stack Overflow

PostgreSQLのアンインストール

システムからすべてのPostgreSQLを削除

apt-get --purge remove postgresql\*

上記の記事では下記も実行するように書かれていますが、これまで試行錯誤する中で消してしまっていたのか、それらしきユーザーやディレクトリが存在しませんでした。

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

再インストール

apt-get install postgresql

できた

sidemt@PC:~$ sudo service postgresql start                                                                                                     [ OK ]
sidemt@PC:~$ psql postgres
psql: FATAL:  role "sidemt" does not exist
sidemt@PC:~$ psql -V
psql (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg18.04+1)

バージョンは意図したものになった。

Ubuntuのログインユーザーと同じ名前のデータベースユーザーを作成

sidemt(Ubuntuのログインユーザーの名前にしてる)というユーザーがいないと言われたので作る。
(Ruby on Rails5速習実践ガイドのPostgresのセットアップの箇所で言われてるのがこれかなと…)

sidemt@PC:~$ sudo su postgres -c 'createuser -s sidemt'
[sudo] password for sidemt:
sidemt@PC:~$ psql postgres
psql (11.5 (Ubuntu 11.5-1.pgdg18.04+1))
Type "help" for help.

postgres=#

できた。

postgresコンソールは使えるようになったけどRailsのコマンドが上手くいかない

けど bin/rails db:create しようとすると上手くいかない

sidemt@PC:~/myapp-rails$ sudo service postgresql start
 * Starting PostgreSQL 11 database server                                                                                                      [ OK ]
sidemt@PC:~/myapp-rails$ bin/rails db:create
could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Couldn't create 'myapp-rails_development' database. Please check your configuration.
rails aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
/mnt/c/Users/Owner/workspace/myapp-rails/bin/rails:9:in `<top (required)>'
/mnt/c/Users/Owner/workspace/myapp-rails/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

Rails がPort 5432を使おうとしているが、Postgresは5433で起動している様子
下記ヘルプのportの項を見るとデフォルトでは5433が使われるみたい。

sidemt@PC:~/myapp-rails$ psql -?
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

General options:
  -c, --command=COMMAND    run only single command (SQL or internal) and exit
  -d, --dbname=DBNAME      database name to connect to (default: "sidemt")
  -f, --file=FILENAME      execute commands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set psql variable NAME to VALUE
                           (e.g., -v ON_ERROR_STOP=1)
  -V, --version            output version information, then exit
  -X, --no-psqlrc          do not read startup file (~/.psqlrc)
  -1 ("one"), --single-transaction
                           execute as a single transaction (if non-interactive)
  -?, --help[=options]     show this help, then exit
      --help=commands      list backslash commands, then exit
      --help=variables     list special variables, then exit

Input and output options:
  -a, --echo-all           echo all input from script
  -b, --echo-errors        echo failed commands
  -e, --echo-queries       echo commands sent to server
  -E, --echo-hidden        display queries that internal commands generate
  -L, --log-file=FILENAME  send session log to file
  -n, --no-readline        disable enhanced command line editing (readline)
  -o, --output=FILENAME    send query results to file (or |pipe)
  -q, --quiet              run quietly (no messages, only query output)
  -s, --single-step        single-step mode (confirm each query)
  -S, --single-line        single-line mode (end of line terminates SQL command)

Output format options:
  -A, --no-align           unaligned table output mode
  -F, --field-separator=STRING
                           field separator for unaligned output (default: "|")
  -H, --html               HTML table output mode
  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset command)
  -R, --record-separator=STRING
                           record separator for unaligned output (default: newline)
  -t, --tuples-only        print rows only
  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)
  -x, --expanded           turn on expanded table output
  -z, --field-separator-zero
                           set field separator for unaligned output to zero byte
  -0, --record-separator-zero
                           set record separator for unaligned output to zero byte

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "/var/run/postgresql")
  -p, --port=PORT          database server port (default: "5433") # ここ
  -U, --username=USERNAME  database user name (default: "sidemt")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.

Report bugs to <pgsql-bugs@postgresql.org>.

database.yml にポート番号の指定を追加

database.yml にポート番号の指定を追加して、5433を利用するようにしてあげると実行できた。

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  port: 5433 # ここを追加

最初にPostgreSQLをインストールするときに参考にさせていただいた、Ruby on Rails5速習実践ガイド↓。

2019年9月8日日曜日

#100DaysOfCode R2 Day16

Day 16: September 7, 2019

Today's Progress:

  • Pluralsight (Google Cloud Functions: Getting Started)視聴
  • Actions on Google 開発
    • Rails Appの作成
    • PostgreSQL の再インストール

Pluralsightが今週末限定の無料キャンペーンをやっていたので、ちょっと手を出してみました。
ところが微妙に体調が悪くて思ったように進まず…。全体像を掴むくらいしかできませんでしたが、役には立ったと思います。明日もう少しやりたい。

Actioins on Googleで利用するデータを登録するサイトをRailsで作ろうと思っていて、そのためのRails Appを作り始めました。
WSL上でPostgreSQLが起動できなくなっていたのですが、結局 apt-get --purge remove postgresql\* とやって全部アンインストールして、再インストール。その後Railsアプリの database.yml にポート番号を指定してあげることで rails db:create が成功し、 rails s できるようになりました。

Links to work:

  • なし

2019年7月6日土曜日

なんとかWSLで System Spec (System Test) 実行できた (Ruby on Rails 5)

2020/08/21 追記:最初に記事を書いた時とは別のPCで、VcXsrvなしで実行できることを確認しました。(インストールもしていない状態)
環境は以下の通りです。
Windows 10 Home バージョン1909
Ubuntu 18.04.5 LTS (Windows Subsystem for Linux)
Ruby 2.6.5
Rails 6.0.2.2

Minitestでのみ確認しました。RSpecは最近触っておらず…。

2019/08/31追記:結局現在は、VcXsrvもgoogle-chromeも起動させていなくても実行できるようになっています…いつの間にか。
何が影響したのかは分からず…。Windows Updateはありました。(Windows 10 Home, 現在のバージョンは1903)
Ubuntu, Ruby, Rails のバージョンは変わっていません。

2019/07/08訂正:何度もすみません。勘違いがありましたので再度訂正します。

一度VcXsrvは不要と書いたのですが、Headless Chromeを使用する場合でもやはり起動だけはさせておかないといけないようです…。
また、削除しても動いたと思っていた require 'capybara/rspec' require 'webdrivers' の二行が必要でした。
最初に記事を書いた時点からの変更点は以下となります。

  • spec_helper.rb の記載内容
    require 'capybara/rspec' require 'webdrivers' を追加
  • WSLで google-chrome を叩いて、Chromeを起動だけしておく
    → ここで google-chrome --headless --disable-gpu --no-sandbox とすれば
    Errorが出なくなりました。


「Ruby on Rails 5 速習実践ガイド」を見ながらRSpecのテストを実行しようとして詰まりました。
3日くらい試行錯誤してなんとか実行まで漕ぎつけたのでその方法のメモです。

途中から心が折れて解消した手順とかエラーメッセージとか正確に控えてません…ごめんなさい。

また、Minitestのみ使っている別のプロジェクトでSystemTestを実行する方法も並行して調べていたので、情報が混ざっていたらすみません。Capybaraを動かす方法という意味では同じだと思うのですが。

少しでも参考になれば幸いです。

2019年3月7日木曜日

WSLのシンボリックリンクの解除

WSLにシンボリックリンクを設定

$ ln -s /mnt/c/Users/Owner/workspace/sample ~/sample

こんな感じで設定したシンボリックリンクを解除するには、

$ unlink sample

でできました。

参考: シンボリックリンクの作成、更新、削除、権限変更をしました。 - Qiita

Windows側のフォルダ名をリネームしたので、それに合わせて変更したかったのですが、なんか下手するとシンボリックリンクの削除じゃなくてそのフォルダ自体を削除してしまいそうで怖かったです(笑)