Ruby Rspec outputs literal escape characters on windows - ruby

I'm following the ruby on rails tutorial: http://railstutorial.org/chapters/static-pages#top
I'm up to using rspec. Having installed the win32console gem, it outputs gibberish in the console, i assume it is outputting the ansi colour change codes:
>rspec spec/
?[31mF?[0m?[31mF?[0m
Finished in 0.34376 seconds
?[31m2 examples, 2 failures?[0m
1) PagesController GET 'home' should be successful
Failure/Error: Unable to find C to read failed line
?[31mundefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x22294e0>?[0m
?[90m # ./spec/controllers/pages_controller_spec.rb:7:in `block (3 levels) in <top (required)>'?[0m
2) PagesController GET 'contact' should be successful
Failure/Error: Unable to find C to read failed line
?[31mundefined method `get' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2:0x2173d28>?[0m
?[90m # ./spec/controllers/pages_controller_spec.rb:14:in `block (3 levels) in <top (required)>'?[0m
Any tips how to fix this?

Ansicon works a treat!
http://adoxa.110mb.com/ansicon/index.html
Download, extract it somewhere, and do:
ansicon -i
Then close/reopen the command prompt. Sweet!

There was a bug in beta releases of RSpec 2. If you upgrade to latest you should now see colors if you have win32console installed.
See this: http://github.com/rspec/rspec-core/issuesearch?state=closed&q=color#issue/143
UPDATE: Keep an eye on this thread:
http://groups.google.com/group/rubyinstaller/browse_thread/thread/2d2a62db7281509a/?pli=1

Update:
Rspec is still very buggy with windows coloring, especially if you're trying to use it with Autotest and/or Spork.
If you are still seeing escape codes, a quick hack is to edit the following file (exact path will depend on your version of RSpec)
%RUBY_HOME%\lib\ruby\gems\1.9.1\gems\rspec-core-2.0.1\bin\rspec
And add the following line
require 'win32console'

Related

How to fix (RubyInstaller::Runtime::DllDirectory::WinApiError) in ruby on windows?

while Implementing ruby2d in the code i get this error
It's a strange runtime issue
Ruby2d Code
require 'ruby2d'
# Set the window size
set width: 300, height: 200
# Create a new shape
s = Square.new
# Give it some color
s.color = 'red'
# Show the window
show
Error
8: from R.rb:1:in `<main>'
7: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
6: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
5: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/ruby2d-0.5.1/lib/ruby2d.rb:28:in `<top (required)>'
3: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/ruby_installer/runtime/singleton.rb:12:in `add_dll_directory'
2: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/ruby_installer/runtime/singleton.rb:12:in `new'
1: from C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/ruby_installer/runtime/dll_directory.rb:50:in `initialize'
*C:/Ruby25-
x64/lib/ruby/site_ruby/2.5.0/ruby_installer/runtime/dll_directory.rb:83:in
`add_dll_directory_winapi': AddDllDirectory failed for
C:/Users/Salim/usr/local/bin
(RubyInstaller::Runtime::DllDirectory::WinApiError)*
Please Help me to fix
You have to run your project from the MINGW 64-bit command prompt. Not from the regular DOS prompt (Windows Command Prompt).
Make sure you follow the instructions here:
http://www.ruby2d.com/learn/windows/
Note the last paragraph:
Using Ruby 2D on Windows
When working with Ruby 2D, make sure to use a MinGW 64-bit command prompt, rather than a standard one (cmd.exe) or the “Start Command Prompt with Ruby” found in the Start menu.
Fixed this issue by creating usr/local/bin folders in the C/users/username directory
and pasted the dlls required which can ne found on Link for dll
extract it and copy the dll from bin and paste in the new bin directory that you have created .
Imp- usr/local/bin was my default dll-load directory i hope its the same for others too but please check the error message properly.

Filling out form with Selenium works on Chrome but not Firefox

I'm trying to fill out a textarea using Selenium and ruby in Firefox, but for some reason, the code below doesn't work. When I switch the same script to Chrome driver though, it does work.
browser.textarea(:placeholder => "Add a comment…").set "#{randomly_chosen_comment}"
On firefox, I get this error:
/Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:623:in `raise_present': element located, but timed out after 30 seconds, waiting for #<Watir::TextArea: located: true; {:placeholder=>"Add a comment…", :tag_name=>"textarea"}> to be present (Watir::Exception::UnknownObjectException)
from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:669:in `rescue in element_call'
from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/elements/element.rb:680:in `element_call'
from /Users/miajohansson/.rvm/gems/ruby-2.2.4/gems/watir-6.10.3/lib/watir/user_editable.rb:11:in `set'
from instabot.rb:68:in `block (2 levels) in <main>'
from instabot.rb:36:in `each'
from instabot.rb:36:in `block in <main>'
from instabot.rb:35:in `loop'
from instabot.rb:35:in `<main>'
I've been working on this for many hours and I can't seem to figure out why it's not working. I need to get it to work on Firefox. Any help is very appreciated!!
I can't reproduce your issue; it is working for me without using the deprecated driver. Are you using the latest Firefox & geckodriver version?
One issue is that the dots are not periods, but different unicode; this will work with the latest geckodriver just fine:
browser.textarea(placeholder: /Add a comment/).set "#{randomly_chosen_comment}"
Or, because that is the first textarea on the page, you can just do:
browser.textarea.set "foo"

'Learn Ruby on Rails' tutorial: Can't submit contact form

I am getting the error below following the tutorial in the book Learn Ruby on Rails.
I am able to launch my app manually by typing the URL into my browser but am wondering why Heroku open does not work.
Any idea what is happening here?
Heroku open error...
$ heroku open
Opening peaks-app... failed
! Heroku client internal error.
! Search for help at: https://help.heroku.com
! Or report a bug at: https://github.com/heroku/heroku/issues/new
Error: Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the '-d' commandline option and file a bug at
https://github.com/copiousfreetime/launchy/issues/new (Launchy::CommandNotFoundError)
Backtrace: /home/action/.heroku/client/vendor/gems/launchy-2.4.2/lib/launchy/applications/browser.rb:63:in `browser_cmdline'
/home/action/.heroku/client/vendor/gems/launchy-2.4.2/lib/launchy/applications/browser.rb:67:in `cmd_and_args'
/home/action/.heroku/client/vendor/gems/launchy-2.4.2/lib/launchy/applications/browser.rb:78:in `open'
/home/action/.heroku/client/vendor/gems/launchy-2.4.2/lib/launchy.rb:29:in `open'
/home/action/.heroku/client/lib/heroku/helpers.rb:328:in `block in launchy'
/home/action/.heroku/client/lib/heroku/helpers.rb:227:in `action'
/home/action/.heroku/client/lib/heroku/helpers.rb:326:in `launchy'
/home/action/.heroku/client/lib/heroku/command/apps.rb:342:in `open'
/home/action/.heroku/client/lib/heroku/command.rb:217:in `run'
/home/action/.heroku/client/lib/heroku/cli.rb:33:in `start'
/home/action/.parts/bin/heroku:24:in `<main>'
Command: heroku open
Version: heroku-toolbelt/3.12.1 (x86_64-linux) ruby/2.1.1
The short answer is that Heroku uses Launchy to launch my app and Launchy is looking for my browser. Since I am using Nitrous.io, I do not have a browser installed, so Launchy does not know what to do.
The author of Launchy explains that "...launching a browser from within the virtual box would do nothing if there was no browser installed." https://github.com/copiousfreetime/launchy/issues/78
Launching manually appears to be my only option at this point.

Vagrant failed on all commands with a same error "code converter not found"

I installed vagrant 1.3.4 on my Windows 7 laptop then tried to type vagrant init from command line. It failed with below error. I tried other commands (even vagrant --help) but still receive a same error. I tried googling for a while to no avail. Is there anyone who can shed light on why this error happens? Any input is appreciated. Thanks
C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:268:in `[]': code converter not found (
UTF-16LE to Windows-1258) (Encoding::ConverterNotFoundError)
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:268:in `block in _all'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:267:in `each'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:267:in `_all'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:410:in `each'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:216:in `find_all'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:216:in `matching_specs'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:238:in `to_specs'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from C:/HashiCorp/Vagrant/embedded/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from C:/HashiCorp/Vagrant/bin//../embedded/../embedded/gems/bin/vagrant:22:in `<main>'
After searching for a while, this seems to be an issue with Ruby and I found the answer from this here:
Error installing Rubygems on ruby command prompt in Win7
I did the same, changing my locale from Vietnam to US and issue resolved.
You can add chcp 65001 > nul at the top of vagrant.bat after #ECHO OFF

Iconv will be deprecated in the future

I tried to read an excel file using this code:
require 'rubygems'
require 'parseexcel'
workbook=Spreadsheet::ParseExcel.parse("D:/TEST.xls")
and I faced the following error:
C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead. default formats are encoded in ISO-8859-1
C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/olestorage.rb:108:in `initialize': No such file or directory - D:/TEST.xls (Errno::ENOENT)
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/olestorage.rb:108:in `open'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/olestorage.rb:108:in `initialize'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/parser.rb:173:in `new'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/parser.rb:173:in `parse'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/parseexcel-0.5.2/lib/parseexcel/parseexcel.rb:10:in `parse'
from lkc.rb:4:in `<main>'
What is the problem, and why can't I read the excel file?
I think the actual error message is this, on the second line:
No such file or directory - D:/TEST.xls (Errno::ENOENT)
Try D:\TEST.xls or D:\\TEST.xls instead.
The title is misleading, this "Iconv will be deprecated in the future" is not the real issue - it's just a warning. As #brandon-tilley says, the problem is that the file you are trying to open does not exist. Try opening IRB, and typing File.open("D:\Test.xml") etc until you do not get an error message. Then you know the file exists and the path is correct, and you can continue debugging other aspects (if there are still errors).

Resources