Ruby 初心者スレッド Part 62

1デフォルトの名無しさん2017/11/24(金) 00:35:29.31ID:rLZHdQ3Q
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/

716デフォルトの名無しさん2018/01/25(木) 18:01:16.77ID:SW6+fB/4
>>714
fizzbuzz

717デフォルトの名無しさん2018/01/25(木) 19:53:33.66ID:8RoLWIQ9
>>715
ARGVの文字列がexternal_str_new_cstr()で作られてるみたいだけど、
windowsだとUTF8_PATHが真になって、文字列がrb_external_str_new_cstr()で作られてないから
taintになってないっぽい

718デフォルトの名無しさん2018/01/26(金) 19:35:15.96ID:ywFtALU+
atomのautocomplete-rubyが動かないです
rsenseのパスは通しているのですがエラーが出ます
rsense startを実行後、localhost:47367にアクセス出来ないことから
rsenseのエラーだとは思うのですが対策がわかりません。
ruby 2.4.1、rsense 0.5.18 です
https://teratail.com/questions/67165
ではJRuby 1.7.26にしてからrsenseをインストールするとできると書いてありましたが、JRuby 1.7.26ではrsenseがインストールできませんでした。
エラーは下記
autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book
rsense version 0.5.18
Usage: rsense <start|stop|restart>
/bin/sh: line 1: start: command not found
(You might need to set the rsense path, see the readme)

719デフォルトの名無しさん2018/01/26(金) 22:16:50.68ID:lWqampzR
>/bin/sh: line 1: start: command not found
start コマンドは存在しない

>(You might need to set the rsense path, see the readme)
rsense のユーザー環境変数PATH を設定しないといけないのかな?
まあ、readme を読んで

>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

これは全体で、1行のコマンドじゃないのか?
これを、rsense の後ろで、改行して打ったのか?

1行で打つか、または行末で改行を、\(バックスラッシュ)でエスケープすれば?
行末を「rsense \」とする

720デフォルトの名無しさん2018/01/26(金) 22:22:02.58ID:lWqampzR
端末・コマンドプロンプトなどで、
which rsense, where rsense などと打てば、

rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているかどうかがわかる

721デフォルトの名無しさん2018/01/26(金) 22:26:40.41ID:lWqampzR
rsense の実行ファイルがあるディレクトリが、
環境変数PATH に設定されているなら

~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる

rsense start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

だから、こう打てばよい

7226922018/01/26(金) 22:52:43.92ID:lWqampzR
Windows10 で、poltergeist のインストールに失敗

Fetching websocket-driver 0.7.0
Installing websocket-driver 0.7.0 with native extensions
MSYS2 could not be found.

websocket-driver-0.7.0-java.gem をダウンロードしたけど、MSYS2 を入れていないから。
(MSYS2 は、2GB 近くあるらしいので、わざと入れていない)

このgem ファイルは、Windows用のコンパイル済みバイナリではないの?

Anemone, mechanize は、静的なHTML用じゃないの?
JavaScript も解釈できるの?

poltergeist から、phantomJS を使おうとしたけど、インストールできないから、
>>698
で書いたように、Chrome のヘッドレスモードを使っている

7237182018/01/26(金) 23:10:28.98ID:ywFtALU+
>>719
atomでの話とターミナルでの話が混ざっていてすみません。
atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます。
エラー内容はstartコマンドがないと言っているので確認のため
ターミナルで$ rsense startと打つとプロセスは走ります。
ただプロセスが走っているのにlocalhost:47367にアクセスできません。

724デフォルトの名無しさん2018/01/26(金) 23:32:26.03ID:lWqampzR
localhost は、つながらないとか、色々とバグるから、
127.0.0.1:47367 を使うこと

rsense start で、サーバーは確かに、47367 ポートで起動しているのか?

lsof とかで、開いているポートを調べる

725デフォルトの名無しさん2018/01/26(金) 23:46:55.80ID:lWqampzR
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます

漏れも、VS Code を使っているけど、

VS Code 内のPowerShell では、よくバグるから、
外部でPowerShell を起動して使っている

外部から、コマンドプロンプト・端末・PowerShell を起動してやれば?

726デフォルトの名無しさん2018/01/26(金) 23:58:30.46ID:lWqampzR
>atomでパスを ~/.rbenv/versions/2.4.1/bin/rsenseと書くと718で書いたエラーが出ます

~(チルダ)が、自分のホームディレクトリに解決できないとか?

.rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。
環境変数PATH の一番前に、追加しているから、危険で影響が大きそう。
.rbenv について、よく調べた方が良いかも

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

また、rbenvでrubyをインストールしたり、gemでパッケージをインストールした後は、
rbenv rehashを実行しなければならないとか

727デフォルトの名無しさん2018/01/27(土) 00:21:43.19ID:PF3DsJ0N
> .rbenv って、探索パスの順序を入れ替える、仮想化技術だろ。

なにも仮想化してないので、仮想化技術ではない

728デフォルトの名無しさん2018/01/27(土) 01:59:43.65ID:lUeqkPr+
pyenv, virtualenv(venv)などのPythonの仮想環境構築も、これと同じ

環境変数PATH の前方に、パスを追加して、実行するコマンドの探索パスを変えることで、
実行されるファイルを変える

7297182018/01/27(土) 19:34:18.97ID:sDN5LFGv
rsenseがどうにも動かないのでatomでは他の補完パッケージを使うことにしました

730デフォルトの名無しさん2018/01/27(土) 20:20:50.96ID:lUeqkPr+
bundle exec を付けないと、パスが探せないとか

7317182018/01/27(土) 20:33:08.71ID:sDN5LFGv
>>730
ターミナルではコマンドが実行できるのでパスは通っているはずなんですが
指定されたポートのローカルサーバーにアクセス出来ない。
($ rbenv which rsense で ~/.rbenv/versions/2.4.1/bin/rsense が出ます)
atomではパスを通す前はno such directryのエラーがパスを通すとcommand not foundになるので
パス自体は通っているとは思うのですがコマンドが見つからない理由がわからない。
すみません、いろいろ言ってもらったのですが改善できなそうでした。

732デフォルトの名無しさん2018/01/28(日) 23:07:14.79ID:+HoRx5lM
Rubyスクリプト内から別のRubyスクリプトを実行して、エラーが出ても元のRubyスクリプトの処理を止めない方法はありますか?

733デフォルトの名無しさん2018/01/28(日) 23:22:35.75ID:ALu/+v8Q
シェルコマンドでruby実行すればいいだろ
所詮Rubyなんか書捨てスクリプトなんだからスマートさなんか気にしないで手っ取り早い方法を選べばいい

734デフォルトの名無しさん2018/01/29(月) 00:28:48.72ID:3fqaX6d7
UNIXならProcessクラス使えば

735デフォルトの名無しさん2018/01/31(水) 00:19:33.04ID:ah9e2u9N
>>719
にも書いたけど、

>autocomplete-ruby: exec error: Error: Command failed: ~/.rbenv/versions/2.4.1/bin/rsense
> start --port 47367 --path /Users/{ユーザー名}/Programming/ruby-book

これを、1行で打たないといけない!
これを、rsense の後ろで、改行したらダメ!

それか、{ユーザー名} のユーザー名に全角文字を使ったとか、半角空白が入っているとか。
どこかに半角空白が入っていると、そこで区切られるから、引数が多くなるのでエラーになる。
だから、" " で囲う必要がある

--path "/Users/{ユーザー名}/Programming/ruby-book"
これを、" " で、囲ってみ

>>731
エラーメッセージが、no such directry から、command not found に変わったなら、
rsense コマンドは使えるけど、たぶん、そのサブコマンドが間違っている

>Usage: rsense <start|stop|restart>
rsense の後に、これらのサブコマンドを正しく続けなければならない

>>721
にも書いたけど、
~/.rbenv/versions/2.4.1/bin/rsense のように、パスを付けて書かなくても、
単に、rsense と打っても、実行ファイルを探せる

rsense start --port 47367 --path "/Users/{ユーザー名}/Programming/ruby-book"

それと、Linux なら、/var/log の下にあるログファイルを見て、
もっと詳しいエラーメッセージを取得して検索する

736デフォルトの名無しさん2018/01/31(水) 01:31:31.84ID:ah9e2u9N
>>732-734
外部コマンドをバッククォートで囲むとか、IO.popen を使って、
終了ステータス「$?」で分岐する

Rubyで外部コマンドを実行して結果を受け取る方法あれこれ
https://qiita.com/tyabe/items/56c9fa81ca89088c5627

resText = ""
IO.popen("where notepad") { |io| resText = io.read }

puts "終了ステータス : #{$?}"
puts resText

出力結果
終了ステータス : pid 9872 exit 0
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

737デフォルトの名無しさん2018/02/07(水) 21:03:36.63ID:/4oaORK0
Windows向けのRubyバイナリですが
ASRの2.5はいつ出るんでしょうか?
RubyInstallerはOLEがうまく動かないのでASRを使っています。

738デフォルトの名無しさん2018/02/07(水) 21:24:44.94ID:N9vep8wO
RubyはWindowsで使うものではない
WinでRubyなんてプロダクションでは全く使われていないので、最新バージョンに追従しなければ何かまずいことになるというプレッシャーは無く、
有志が気が向いたときに遊びでやってるだけだ
そんなものに期待するのがそもそもの間違い
いい加減諦めてWSLかVMかMacに移行しなさい

739デフォルトの名無しさん2018/02/07(水) 21:42:14.34ID:ZXClH+OJ
WindowsでRuby使うとかマゾもいいとこ。
おとなしくPythonにしとけばいいのに。
日本語の情報が豊富!とか言って初心者釣ってたやつらにも責任がある。
コミュニティがシェア9割のWindowsを親の仇のように嫌ってる時点で初心者向けなんか有り得ないというのに。

740デフォルトの名無しさん2018/02/08(木) 04:05:47.94ID:31uXy/SD
Windows10 Home で、WSL(Windows Subsystem for Linux)正式版を簡単に導入できた

MS Store から簡単に、Ubuntu 16.04 をダウンロードできた。
サイズは、200MB ほど

パッケージマネージャーで、Ruby 2.3 も簡単にインストールできた

741デフォルトの名無しさん2018/02/08(木) 04:50:05.31ID:lklijtOD
できたんだ

742デフォルトの名無しさん2018/02/08(木) 06:54:03.75ID:ZE8Ol0Sg
>>737
OLEがうまく動かないってどういうこと?

7437372018/02/08(木) 18:58:35.45ID:zFeCrx9M
>>742
リモートのデータベースに接続できない

744デフォルトの名無しさん2018/02/08(木) 19:31:35.11ID:x393c3Y0
最近のwindowsは32bit版のODBCと64bit版のODBC分かれてるから
データソース作るときにどっちか逆になると繋がらないことがたまによくある

7457372018/02/08(木) 20:06:16.19ID:zFeCrx9M
環境はwindows7の32bitだ
そんで同じスクリプトで
ASRなら繋がるけどRubyInstallerだと繋がらないんだ

746デフォルトの名無しさん2018/02/09(金) 01:32:56.68ID:JPCfoDnF
まず、エラーメッセージを取得して、それで検索することから始める

747デフォルトの名無しさん2018/02/09(金) 01:36:30.27ID:ZFL6conz
そして5年前の情報とかしかなくて終わる

748デフォルトの名無しさん2018/02/09(金) 18:48:38.40ID:g1sd4Kag
AWSのCloud9のRubyで アラーム代わりにwavやmp3を再生したいんですけど、かんたんにできるでしょうか

749デフォルトの名無しさん2018/02/09(金) 19:25:09.92ID:FL1yxC1J
bokete みたいなwebサイト作りたいんですけど何種類かアイデアあるんすけど
ruby ➡ Ror
php ➡ WordPress

どっちがいいっすか?

750デフォルトの名無しさん2018/02/10(土) 01:08:50.39ID:TNdj3qFT
ruby -e "puts 'abc'"
ruby -e 'puts "abc"'

1-liner で、上はWindows、下はLinux でのクォーテーションだけど、
簡単に相互を置換する方法はない?

ruby -e "puts 'abc'"
例えば、これの、" を' に置換すると、

ruby -e 'puts 'abc''
となって、区別できなくなる

>>749
もちろん、Rails

751デフォルトの名無しさん2018/02/10(土) 01:37:14.21ID:dbzbK1DZ
>>748
Ruby関係ない
純粋にJavaScriptやHTML5の話

752デフォルトの名無しさん2018/02/10(土) 08:42:39.65ID:BVqOrgag
>>750
WindowsだろうがLinuxだろうがワンライナーならどちらのクォーテーション・マークでも動作するから置換する必要はない
それでも置換するなら、簡単なものなら..tr('"\'','\'"')
真面目にやるなら式中の"を%Qに'を%qにでもすればいいんじゃない

753デフォルトの名無しさん2018/02/10(土) 17:44:21.82ID:3K6ZWpKd
Array#zipに関する質問です。
aを二次元座標[x, y]の配列として
a[0].zip(*a[1..-1])と同じ動作を効率的にできるだけ短く書くコードを教えてください。

754デフォルトの名無しさん2018/02/10(土) 17:55:38.94ID:eFhUfahp
>>753
そんなところをハックしてもパフォーマンスは一ミリも改善しません
速くしたいなら他の言語を使うか、SQLをチューニングましょう

755デフォルトの名無しさん2018/02/10(土) 20:29:37.87ID:Jen4nAbv
aの要素数が滅茶苦茶多いと、引数に渡すだけで大変そう

756デフォルトの名無しさん2018/02/10(土) 21:53:50.96ID:ELWGSSBQ
引数を渡すかわりに引導を渡してみては?

757デフォルトの名無しさん2018/02/10(土) 22:18:46.37ID:BVqOrgag
速いかは知らないけど
a.transposeでいいんじゃないの

758デフォルトの名無しさん2018/02/11(日) 18:24:55.59ID:ONLKHfKt
>>757
transposeなんてメソッド存在していたとは……知らなかった。
というかriのArray#zipで言及して欲しい。

759デフォルトの名無しさん2018/02/11(日) 20:12:19.15ID:aLeqVhz7
残念だが手遅れ

760デフォルトの名無しさん2018/02/11(日) 20:17:25.63ID:JLQLPcxv
よく使うクラスだけでもマニュアル全部読んでおくといいよ大した量じゃないし

761デフォルトの名無しさん2018/02/12(月) 13:39:48.05ID:S+p/PDus
普通は、transpose ぐらいあるだろ。
R なんて、行列が逆だから、transpose が無かったら、混乱する

module Enumerable だけは、読んでおけ

762デフォルトの名無しさん2018/02/14(水) 16:44:54.84ID:gwupYb1h
Windows10 の、Chrome の自動操作で、
SeleniumWebDriver では、Ruby から起動したブラウザが、閉じてしまう。
sleep で、待つ事はできるけど

ブラウザが閉じないように、出来ないの?
それか、iMacros を使うしかないのか?

763デフォルトの名無しさん2018/02/17(土) 22:07:32.61ID:IU1gsQgu
ActiveRuby (Beta 版)と言う、Rails など、40 gem、有用なライブラリ一式をまとめた、
Windows 用の、Precompiled Ruby があるね

Ruby 2.3.4 で、容量は、1GB

764デフォルトの名無しさん2018/02/17(土) 22:10:01.26ID:C+rXeEsA
何で句読点そんななの?

765デフォルトの名無しさん2018/02/19(月) 08:06:13.46ID:FUvFB9Jm

766デフォルトの名無しさん2018/02/19(月) 08:14:01.13ID:NxG0QMWB
戦場カメラマンかよ

新着レスの表示
レスを投稿する