[erlang-questions] Programming Erlang: Chap 18, Websockets

Nuku Ameyibor nayibor@REDACTED
Mon Jun 26 09:35:40 CEST 2017


find a few examples below

{deps, [

  {cowboy, {git, "git://*https://github.com/ninenines/cowboy.git
<https://github.com/ninenines/cowboy.git>*", {ref, "b7210d6"}}},

  {cowboy, {git, "git://*https://github.com/ninenines/cowboy.git
<https://github.com/ninenines/cowboy.git>*", {branch, "master"}}},
  {cowboy, {git, "git://*https://github.com/ninenines/cowboy.git
<https://github.com/ninenines/cowboy.git>*", {tag, "1.1.2"}}},


]}.
more ways of doing it can be found at
http://www.rebar3.org/docs/dependencies



On Mon, Jun 26, 2017 at 2:06 AM, 7stud <7stud@REDACTED> wrote:

> > Now it is broken because of the other issue I mentioned, the copy of
> > cowboy it is fetching is from github master and the API changed since
> > the code was written.
>
> > You'll either need to update the project's code or find what cowboy
> > version it worked with and update the dependencies to use that version.
>
> I can't figure out how to specify an earlier version of cowboy:
>
> rebar.config:
> ========
> {deps, [
>   {cowboy, "1.0.*", {git, "https://github.com/ninenines/cowboy/tree",
> "1.0.x"}}
> ]}.
> ========
>
> original rebar.config:
> =========
> {deps, [
>   {cowboy, ".*", {git, "git://github.com/extend/cowboy.git", "master"}}
> ]}.
> ========
>
>
> -----Original Message-----
> From: "Tristan Sloughter" [t@REDACTED]
> Date: 06/25/2017 09:16 PM
> To: erlang-questions@REDACTED
> Subject: Re: [erlang-questions] Programming Erlang: Chap 18, Websockets
>
> Right, it fixed your original issue, which was ssl not being started.
>
> Now it is broken because of the other issue I mentioned, the copy of
> cowboy it is fetching is from github master and the API changed since
> the code was written.
>
> You'll either need to update the project's code or find what cowboy
> version it worked with and update the dependencies to use that version.
>
> --
>   Tristan Sloughter
>   "I am not a crackpot" - Abe Simpson
>   t@REDACTED
>
> On Sun, Jun 25, 2017, at 05:33 PM, 7stud wrote:
> > > So the quick fix is to add `application:start(asn1),
> > application:start(public_key), application:start(ssl),` before the start
> > of ranch. Or just `application:ensure_all_started(ranch)`.<
> >
> > I tried some combination of those already, but maybe not that exact
> > combination.  Here is what I get when I try
> >
> >      application:ensure_all_started(ranch)
> >
> >
> > Source code:
> > ----------
> > start_link(Dispatch, Port) ->
> >     io:format("Starting:~p~n",[file:get_cwd()]),
> >     ok = application:start(crypto),
> >     %%ok = application:start(ranch),  % Line #22
> >     application:ensure_all_started(ranch),
> >     ok = application:start(cowlib),
> >     ok = application:start(cowboy),
> >     ok = web_server_start(Port, Dispatch).
> > ----------
> >
> > Output:
> > ==========
> > ../ezwebframe-master$ gmake
> > ...
> > ...
> > Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:4:4] [async-threads:10]
> > [hipe] [kernel-poll:false]
> >
> > a simple_demo of websockets....
> > Load the page http://localhost:1456/ in your browser
> > Starting:{ok,"/Users/7stud/erlang_programs/ezwebframe/
> ezwebframe-master/demos"}
> > Eshell V8.2  (abort with ^G)
> > 1> {"init terminating in
> > do_boot",{undef,[{cowboy,start_http,[ezwebframe,100,[{
> port,1456}],[{env,[{dispatch,[{'_',[],[{'_',[],ezwebframe,{
> env,#Fun<ezwebframe_demos.0.106014447>}}]}]}]}]],[]},{
> ezwebframe,web_server_start,2,[{file,"src/ezwebframe.erl"},{
> line,37}]},{ezwebframe,start_link,2,[{file,"src/ezwebframe.
> erl"},{line,29}]},{init,start_em,1,[]},{init,do_boot,3,[]}]}}
> > init terminating in do_boot ()
> >
> > Crash dump is being written to: erl_crash.dump...done
> > make[1]: *** [all] Error 1
> > gmake: *** [Makefile:4: all] Error 2
> > =============
> >
> >
> > -----Original Message-----
> > From: "Tristan Sloughter" [t@REDACTED]
> > Date: 06/25/2017 05:14 PM
> > To: erlang-questions@REDACTED
> > Subject: Re: [erlang-questions] Programming Erlang: Chap 18, Websockets
> >
> > The main issue here looks to be that the dep is tied to the master
> > branch of a git repo. So the dependency is defined as one that will
> > continually change over time.
> >
> > The version of ranch used when the code was written probably didn't list
> > `ssl` as a dependency, now that it does `application:start(ranch)` will
> > fail. So the quick fix is to add `application:start(asn1),
> > application:start(public_key), application:start(ssl),` before the start
> > of ranch. Or just `application:ensure_all_started(ranch)`.
> >
> > Moral of the story: lock your dependencies (even better if on a package
> > and not just a git reference) and use a release or
> > `application:ensure_all_started` for running a project :)
> >
> > --
> >   Tristan Sloughter
> >   "I am not a crackpot" - Abe Simpson
> >   t@REDACTED
> >
> > On Sun, Jun 25, 2017, at 02:00 PM, Joe Armstrong wrote:
> > > Unfortunately cowboy (which I used) and the websockets standard have
> > > changed since I wrote the book. I also used make and not rebar.
> > >
> > > You've now run into what is one of the biggest problems in the
> > > computer world - code that used to work no longer works despite the
> > > fact the code itself has not been changed.
> > >
> > > One way around this is to use zero dependencies - in fact several
> > > programs I wrote 30 years ago in Erlang still work fine with no
> > > changes because there are no external dependencies. (as an aside: this
> > > is why I like code with zero external dependencies - it takes a lot
> > > longer to write - but you don't have to support it into the future
> > > when they things you depend upon change in a manner that is
> > > incompatible manner)
> > >
> > > In this example the underlying websockets protocol changed -
> > > websockets its is a crazy mess - websockets should have provided raw
> > > socket transport instead they chose to scramble the data in a weird
> > > manner to avoid problems with badly written proxies.
> > >
> > > The idea of "write once run anywhere" is a great goal - but we can't
> > > even do this - "write once run forever with no changes to your code"
> > > would be even better and things like NixOS are a step in the right
> > > direction.
> > >
> > > Welcome to the world of broken software.
> > >
> > > In my opinion this (making sure software evolution does not break
> > > existing functioning software)  is one of the biggest remaining
> > > software problems - my guess is that this problem is getting worse
> > > (due to the explosion in the numbers of programming languages,
> > > libraries and frameworks and build systems) and will be even worse in
> > > the IoT world.
> > >
> > > Lots for you guys to work on :-)
> > >
> > > Cheers
> > >
> > > /Joe
> > >
> > >
> > > On Sun, Jun 25, 2017 at 10:02 PM, 7stud <7stud@REDACTED> wrote:
> > > > I'm having trouble running the demos for the ezwebframe.  I
> installed the old rebar (v. rebar3), but I'm getting the error:
> > > >
> > > >     {badmatch,{error,{not_started,ssl}}
> > > >
> > > > I'm on Mac OSX 10.10.5.  Here is my output:
> > > >
> > > > ===========
> > > > ../ezwebframe-master$ gmake
> > > > ...
> > > > ....
> > > > Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:4:4]
> [async-threads:10] [hipe] [kernel-poll:false]
> > > >
> > > > a simple_demo of websockets....
> > > > Load the page http://localhost:1456/ in your browser
> > > > Starting:{ok,"/Users/7stud/erlang_programs/ezwebframe/
> ezwebframe-master/demos"}
> > > > Eshell V8.2  (abort with ^G)
> > > > 1> {"init terminating in do_boot",{{badmatch,{error,{
> not_started,ssl}}},[{ezwebframe,start_link,2,[{
> file,"src/ezwebframe.erl"},{line,22}]},{init,start_em,1,[]
> },{init,do_boot,3,[]}]}}
> > > > init terminating in do_boot ()
> > > >
> > > > Crash dump is being written to: erl_crash.dump...done
> > > > make[1]: *** [all] Error 1
> > > > gmake: *** [Makefile:4: all] Error 2
> > > > ===========
> > > >
> > > > Thanks for any help is solving this problem!
> > > > _______________________________________________
> > > > erlang-questions mailing list
> > > > erlang-questions@REDACTED
> > > > http://erlang.org/mailman/listinfo/erlang-questions
> > > _______________________________________________
> > > erlang-questions mailing list
> > > erlang-questions@REDACTED
> > > http://erlang.org/mailman/listinfo/erlang-questions
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
> >
> >
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://erlang.org/mailman/listinfo/erlang-questions
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170626/18ff9143/attachment.htm>


More information about the erlang-questions mailing list