scotty-web / scotty

Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp (Official Repository)
http://hackage.haskell.org/package/scotty
BSD 3-Clause "New" or "Revised" License
1.71k stars 132 forks source link

Cloned Repo and Tried to Run `examples/basic.hs` #389

Closed lukemccartney closed 3 months ago

lukemccartney commented 3 months ago

Hi,

I cloned the repo (no problem on my Mac) after it failed to clone on a DigitalOcean Droplet.

I tried to run:

runhaskell examples/basic.hs

And was hit with the following error:

Web/Scotty/Action.hs:95:28: error:
     error: token is not a valid binary operator in a preprocessor subexpression
   |
95 | #if !MIN_VERSION_http_types(0,11,0)
   |                            ^
#if !MIN_VERSION_http_types(0,11,0)
    ~~~~~~~~~~~~~~~~~~~~~~~^
1 error generated.

Web/Scotty/Action.hs:1:1: error:
    `clang' failed in phase `C pre-processor'. (Exit code: 1)
  |
1 | {-# LANGUAGE OverloadedStrings #-}
  | ^
*** Exception: ExitFailure 1

I don't know what this means.

I was hoping to use Scotty as an alternative to NGINX -- is that a possibility or am I missing the point here? Getting back to the problem at hand, do I need to change to GCC or something?

I'm running MacOS Sonoma 14.2.1.

ocramz commented 3 months ago

Hi @lukemccartney , we don't have a way to test your exact setup. Personally, I haven't used runhaskell in like 10 years (our README could use some double checking in that regard).

I usually do Haskell work via stack on MacOS without a problem. Could you try stack build && stack exec -- scotty-basic ? I imagine cabal would have no problem either.

lukemccartney commented 3 months ago

Yeah, I've never even bothered with runhaskell, GHCi and cabal usually work just fine. I think it is worth mentioning that the example basic.hs also requires wai-extra, random, http-types and text in order to run using cabal. Not exactly basic for a beginner.

Even after installing all of that and reaching Setting phasers to stun... (port 3000) (ctrl-c to quit), I can't view anything on localhost on Safari or via curl.

What am I doing wrong? What is it supposed to display?

Also, can scotty be used as an alternative to NGINX or is it more similar to Hakyll?

ocramz commented 3 months ago

Hitting the root endpoint should return "foobar" as response, see

https://github.com/scotty-web/scotty/blob/master/examples/basic.hs#L35

I think you would have to build a fair bit of stuff on top of scotty to make it function like nginx.
Hakyll is a static website editing tool instead, the actual serving is done by anything that can serve static files .

lukemccartney commented 3 months ago

I'll give it a go using stack instead of cabal and see if I can get it to return "foobar". I didn't think it was similar to Hakyll but I thought it may be possible to use it as a web server on a Digital Ocean droplet to display a static HTML file.

ocramz commented 3 months ago

Closing this as it doesn't seem to be a scotty issue.