Hi! Please tell me how to run an example of HTTP Server in the reference book.
require "http/server"
server = HTTP::Server.new do |context|
context.response.content_type = "text/plain"
context.response.print "Hello world! The time is #{Time.local}"
end
address = server.bind_tcp 8080
puts "Listening on http://#{address}"
server.listen
When I trying “build” or “run” program I get error.
Error: execution of command failed with code: 1:…
When I launching through “play”, I get a site playground, but I think I get a white page with text “Hello, World”.
What am I doing wrong? How launching this code?
Assuming you have the latest crystal installed and all that, you just take that code sample and put it in to a file named server.cr, and then from your terminal, you can run crystal server.cr. That will output the “Listening on Listening on http://127.0.0.1:8080”.
That’s it!
To create a single binary file for this, you would run crystal build --release server.cr. Then to run that file, you just run ./server. Give that a shot, and let us know how it goes.
@Mostik for future posts, it’s always good to post the entire error message. The error above suggests the app is compiling against a wrong version of SSL. This can’t be deduced from the original error you posted: “Error: execution of command failed with code: 1:…”.
Ok, so a few questions here to get on the same page:
What OS are you on? It looks like you maybe installed with snap? You could maybe take a look at an alternate install method: https://crystal-lang.org/install/
Then if you’re able to get it to work with an alternate way, let the community know just in case there’s an issue with how the snap does installed. (I’ve never used it, so I don’t know how that works).
For this small example you would be fine probably turning off the integration for SSL, but is not the first suggestion I would do. Yet, to do that use the following command:
$ pkg-config --libs libssl - not found
$ pkg-config --libs libcrypto - found
Then I ran $ crystal run server.cr -Dwithout_openssl the program started. Yes it worked!
Then I tried to ran $ crystal run server.cr and it worked too! Although I didn’t install anything.
Then I ran $ pkg-config --libs libssl again it found. This is strange.
Everything works now!
Thank you so much!
$ pkg-config --libs libssl
Before it looked like this (Sorry I just forgot to take a screenshot )
Package libssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `libssl '
to the PKG_CONFIG_PATH environment variable
Package 'libssl', required by 'virtual: world', not found
After that it looked like this
-lssl
I deleted the temporary files, but everything works.
I created a new project and everything works there too.
I already had openssl installed.
I also reinstalled Сrystal using pacman, but it still didn’t work, but it may have somehow affected it when combined with something else.