Code Monkey home page Code Monkey logo

anycable_rails_demo's Introduction

Gem Version Build Coverage Status Documentation

AnyCable

AnyCable allows you to use any WebSocket server (written in any language) as a replacement for your Ruby server (such as Faye, Action Cable, etc).

AnyCable uses the same protocol as ActionCable, so you can use its JavaScript client without any monkey-patching.

AnyCable Pro has been launched ๐Ÿš€

Sponsored by Evil Martians

Requirements

Usage

Check out our ๐Ÿ“‘ Documentation.

Links

Talks

Building

Generating gRPC files from .proto

  • Install required GRPC gems:
gem install grpc
gem install grpc-tools
  • Re-generate GRPC files (if necessary):
make

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/anycable/anycable.

Please, provide reproduction script (using this template) when submitting bugs if possible.

License

The gem is available as open source under the terms of the MIT License.

Security Contact

To report a security vulnerability, please contact us at [email protected]. We will coordinate the fix and disclosure.

anycable_rails_demo's People

Contributors

jjb avatar palkan avatar systho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

anycable_rails_demo's Issues

Webpacker.dev_server.running? will always return false on precompile_assets.rb

Given that rspec will change RAILS_ENV to "test", and that Webpacker has no "dev_server" configuration at config/webpacker.yml for the test environment by default - which is required to run the socket connection check of Webpacker.dev_server.running?...

Screen Shot 2021-06-25 at 1 07 57 AM

...the precompile_assets.rb script won't detect Webpacker dev server running, even if it's actually running.

System specs related to multiple sessions fail running specs locally

Hi @palkan! I love your work!

I'm digging into your amazing blog post about cuprite, but I'm not using Docker because I feel uncomfortable about it (I'd like to understand how things work locally before adding one more level of abstraction). So, I stumbled upon this repo which implements the code you wrote in the blog post, and the application on development works great; but the system specs related to multiple sessions fail. Example here:

> bundle exec rspec spec/system/chat/messaging_spec.rb:13
Run options: include {:locations=>{"./spec/system/chat/messaging_spec.rb"=>[13]}}

Randomized with seed 19749

๐Ÿข  Precompiling assets.
Finished in 0.05 seconds

Workspaces -> Chat
  I can send a message (FAILED - 1)

Failures:

  1) Workspaces -> Chat I can send a message
     Failure/Error: expect(page).to have_text "Hi there"
       expected to find text "Hi there" in "You will receive new messages as they come"
     
     [Screenshot]: tmp/capybara/screenshots/failures_r_spec_example_groups_workspaces_chat_i_can_send_a_message_495.png

     
     # ./spec/system/chat/messaging_spec.rb:20:in `block (4 levels) in <top (required)>'
     # ./spec/system/chat/messaging_spec.rb:19:in `block (3 levels) in <top (required)>'
     # ./spec/system/chat/messaging_spec.rb:14:in `block (2 levels) in <top (required)>'
     # ./spec/system/support/better_rails_system_tests.rb:29:in `block (2 levels) in <compiled>'

Finished in 3.35 seconds (files took 1.08 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/system/chat/messaging_spec.rb:13 # Workspaces -> Chat I can send a message

I found that AnyCable is rejecting connections for some reason, as you can see by the logs:

bundle exec anycable
Starting AnyCable gRPC server (pid: 139779, workers_num: 30)
AnyCable version: 1.0.1 (proto_version: v1)
gRPC version: 1.30.0
Serving Rails application from ./config/environment.rb
Broadcasting Redis channel: __anycable__
RPC server is starting...
RPC server is listening on 127.0.0.1:50051
RPC Connect: <AnyCable::ConnectionRequest: env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {}, istate: {}>>
Started "/cable" [AnyCable] for 127.0.0.1 at 2020-07-17 11:07:45 +0200
RPC Command: <AnyCable::CommandMessage: command: "subscribe", identifier: "{\"channel\":\"WorkspaceChannel\",\"id\":\"demo\"}", connection_identifiers: "{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}", data: "", env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {"__ltags__"=>"[]"}, istate: {}>>
WorkspaceChannel is transmitting the subscription confirmation
RPC Command: <AnyCable::CommandMessage: command: "subscribe", identifier: "{\"channel\":\"ChatChannel\",\"id\":\"demo\"}", connection_identifiers: "{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}", data: "", env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {"__ltags__"=>"[]"}, istate: {}>>
ChatChannel is transmitting the subscription confirmation
RPC Command: <AnyCable::CommandMessage: command: "subscribe", identifier: "{\"channel\":\"ListChannel\",\"id\":\"1\",\"workspace\":\"demo\"}", connection_identifiers: "{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}", data: "", env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {"__ltags__"=>"[]"}, istate: {}>>
ListChannel is transmitting the subscription confirmation
RPC Command: <AnyCable::CommandMessage: command: "subscribe", identifier: "{\"channel\":\"ListChannel\",\"id\":\"2\",\"workspace\":\"demo\"}", connection_identifiers: "{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}", data: "", env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {"__ltags__"=>"[]"}, istate: {}>>
ListChannel is transmitting the subscription confirmation
RPC Command: <AnyCable::CommandMessage: command: "subscribe", identifier: "{\"channel\":\"ListChannel\",\"id\":\"3\",\"workspace\":\"demo\"}", connection_identifiers: "{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}", data: "", env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>"_session_id=874ac605b6f3ceaaa0be00371f71b70e; _anycable_rails_demo_session=PI2mlAgQBnSo1J%2BzBM3ZL0dFoHWZ7onaMSxwhdsTu89SyyGVjeBagk1908puK%2FiBIcdkU9iD7RY2nWAutLth5C5QYvdsWp8LPbePz4rLMfEJ3oqdrO36qhiVrIO26W1oD6SGgTucXuU%2F%2Bg3dO82%2BNgKv7JO8GmK7waZ30RwcPEYXRtD0T3zjLx4NusQJM2HXjjOofaOy7kovK1H5MWPl%2FbUZ8XhBVNTuwEd5zjeEfIgn6LdiYib1%2FNsSP0d8FxhQxwaB8Hr32Wc0Yg5476sqwe8sZL1FPph1%2BvQYPB5b3JeuKIwo6E0Q7zqecF6%2Fnt9dTy496HcfcoHGNOwH6b0%2BrW9GFkrhXXJ%2FhRG5mQ%3D%3D--Dzu%2BAYRuTGiB4CUZ--O7UigW8Au7fVfiDYb2n2Xw%3D%3D; uid=maurizio%2Fglkoh"}, cstate: {"__ltags__"=>"[]"}, istate: {}>>
ListChannel is transmitting the subscription confirmation
RPC Connect: <AnyCable::ConnectionRequest: env: <AnyCable::Env: url: "http://localhost:8080/cable", headers: {"REMOTE_ADDR"=>"127.0.0.1", "cookie"=>""}, cstate: {}, istate: {}>>
Started "/cable" [AnyCable] for 127.0.0.1 at 2020-07-17 11:09:34 +0200
An unauthorized connection attempt was rejected
Finished "/cable" [AnyCable] for 127.0.0.1 at 2020-07-17 11:09:34 +0200 (Rejected)
anycable-go --debug
 DEBUG 2020-07-17T09:07:42.564Z context=main ๐Ÿ”ง ๐Ÿ”ง ๐Ÿ”ง Debug mode is on ๐Ÿ”ง ๐Ÿ”ง ๐Ÿ”ง
  INFO 2020-07-17T09:07:42.564Z context=main Starting AnyCable 1.0.1-1551caf (pid: 140297, open file limit: 1024)
 DEBUG 2020-07-17T09:07:42.564Z context=disconnector Calls rate: 10ms         
  INFO 2020-07-17T09:07:42.564Z context=main Handle WebSocket connections at http://localhost:8080/cable
  INFO 2020-07-17T09:07:42.564Z context=main Handle health connections at http://localhost:8080/health
 DEBUG 2020-07-17T09:07:42.564Z context=http Starting WebSocket server at http://localhost:8080
  INFO 2020-07-17T09:07:42.564Z context=rpc RPC controller initialized: localhost:50051 (concurrency: 28, proto_versions: v0,v1)
  INFO 2020-07-17T09:07:42.565Z context=pubsub Subscribed to Redis channel: __anycable__

 DEBUG 2020-07-17T09:07:45.321Z context=rpc Authenticate response: status:SUCCESS identifiers:"{\"user\":\"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o\"}" transmissions:"{\"type\":\"welcome\"}" env:<cstate:<key:"__ltags__" value:"[]" > > 
 DEBUG 2020-07-17T09:07:45.321Z context=node sid=339X7KGEgxdn-ny8y73dX websocket session established
 DEBUG 2020-07-17T09:07:45.321Z context=hub sid=339X7KGEgxdn-ny8y73dX Registered with identifiers: {"user":"Z2lkOi8vYW55Y2FibGUvVXNlci9nbGtvaD9uYW1lPW1hdXJpemlvJmlkPWdsa29o"}
 DEBUG 2020-07-17T09:07:45.322Z context=node sid=339X7KGEgxdn-ny8y73dX Incoming message: &{subscribe {"channel":"WorkspaceChannel","id":"demo"} }
 DEBUG 2020-07-17T09:07:45.453Z context=rpc Command response: status:SUCCESS streams:"workspace:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9Xb3Jrc3BhY2UvMQ" transmissions:"{\"identifier\":\"{\\\"channel\\\":\\\"WorkspaceChannel\\\",\\\"id\\\":\\\"demo\\\"}\",\"type\":\"confirm_subscription\"}" env:<> 
 DEBUG 2020-07-17T09:07:45.453Z context=node sid=339X7KGEgxdn-ny8y73dX Subscribed to channel: {"channel":"WorkspaceChannel","id":"demo"}
 DEBUG 2020-07-17T09:07:45.453Z channel={"channel":"WorkspaceChannel","id":"demo"} context=hub sid=339X7KGEgxdn-ny8y73dX stream=workspace:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9Xb3Jrc3BhY2UvMQ Subscribed               
 DEBUG 2020-07-17T09:07:45.453Z context=node sid=339X7KGEgxdn-ny8y73dX Incoming message: &{subscribe {"channel":"ChatChannel","id":"demo"} }
 DEBUG 2020-07-17T09:07:45.466Z context=rpc Command response: status:SUCCESS streams:"chat:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9Xb3Jrc3BhY2UvMQ" transmissions:"{\"identifier\":\"{\\\"channel\\\":\\\"ChatChannel\\\",\\\"id\\\":\\\"demo\\\"}\",\"type\":\"confirm_subscription\"}" env:<istate:<key:"workspace" value:"Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9Xb3Jrc3BhY2UvMQ" > > 
 DEBUG 2020-07-17T09:07:45.466Z context=node sid=339X7KGEgxdn-ny8y73dX Subscribed to channel: {"channel":"ChatChannel","id":"demo"}
 DEBUG 2020-07-17T09:07:45.466Z channel={"channel":"ChatChannel","id":"demo"} context=hub sid=339X7KGEgxdn-ny8y73dX stream=chat:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9Xb3Jrc3BhY2UvMQ Subscribed               
 DEBUG 2020-07-17T09:07:45.466Z context=node sid=339X7KGEgxdn-ny8y73dX Incoming message: &{subscribe {"channel":"ListChannel","id":"1","workspace":"demo"} }
 DEBUG 2020-07-17T09:07:45.517Z context=rpc Command response: status:SUCCESS streams:"list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzE" transmissions:"{\"identifier\":\"{\\\"channel\\\":\\\"ListChannel\\\",\\\"id\\\":\\\"1\\\",\\\"workspace\\\":\\\"demo\\\"}\",\"type\":\"confirm_subscription\"}" env:<> 
 DEBUG 2020-07-17T09:07:45.517Z context=node sid=339X7KGEgxdn-ny8y73dX Subscribed to channel: {"channel":"ListChannel","id":"1","workspace":"demo"}
 DEBUG 2020-07-17T09:07:45.517Z channel={"channel":"ListChannel","id":"1","workspace":"demo"} context=hub sid=339X7KGEgxdn-ny8y73dX stream=list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzE Subscribed               
 DEBUG 2020-07-17T09:07:45.517Z context=node sid=339X7KGEgxdn-ny8y73dX Incoming message: &{subscribe {"channel":"ListChannel","id":"2","workspace":"demo"} }
 DEBUG 2020-07-17T09:07:45.524Z context=rpc Command response: status:SUCCESS streams:"list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzI" transmissions:"{\"identifier\":\"{\\\"channel\\\":\\\"ListChannel\\\",\\\"id\\\":\\\"2\\\",\\\"workspace\\\":\\\"demo\\\"}\",\"type\":\"confirm_subscription\"}" env:<> 
 DEBUG 2020-07-17T09:07:45.524Z context=node sid=339X7KGEgxdn-ny8y73dX Subscribed to channel: {"channel":"ListChannel","id":"2","workspace":"demo"}
 DEBUG 2020-07-17T09:07:45.524Z channel={"channel":"ListChannel","id":"2","workspace":"demo"} context=hub sid=339X7KGEgxdn-ny8y73dX stream=list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzI Subscribed               
 DEBUG 2020-07-17T09:07:45.524Z context=node sid=339X7KGEgxdn-ny8y73dX Incoming message: &{subscribe {"channel":"ListChannel","id":"3","workspace":"demo"} }
 DEBUG 2020-07-17T09:07:45.529Z context=rpc Command response: status:SUCCESS streams:"list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzM" transmissions:"{\"identifier\":\"{\\\"channel\\\":\\\"ListChannel\\\",\\\"id\\\":\\\"3\\\",\\\"workspace\\\":\\\"demo\\\"}\",\"type\":\"confirm_subscription\"}" env:<> 
 DEBUG 2020-07-17T09:07:45.529Z context=node sid=339X7KGEgxdn-ny8y73dX Subscribed to channel: {"channel":"ListChannel","id":"3","workspace":"demo"}
 DEBUG 2020-07-17T09:07:45.529Z channel={"channel":"ListChannel","id":"3","workspace":"demo"} context=hub sid=339X7KGEgxdn-ny8y73dX stream=list:Z2lkOi8vYW55Y2FibGUtcmFpbHMtZGVtby9MaXN0LzM Subscribed               
 DEBUG 2020-07-17T09:09:34.320Z context=rpc Authenticate response: status:FAILURE transmissions:"{\"type\":\"disconnect\",\"reason\":\"unauthorized\",\"reconnect\":false}" 
 ERROR 2020-07-17T09:09:34.320Z context=ws Websocket session initialization failed: Application error:

Do you have any clue about how can be fixed? BTW I'm using the repo as-it-is, and these are the command I run, without any env var set:

bundle exec anycable
anycable-go
bundle exec rspec

anycable-go version is 1.0.1-1551caf.

Cheers!

ERROR: manifest for anycable/anycable-go:1.0

Hello, @palkan
I had some error when run project

$ dip up rails anycable
Pulling ws (anycable/anycable-go:1.0)...
ERROR: manifest for anycable/anycable-go:1.0 not found: manifest unknown: manifest unknown

And fixed it by replacing this line to image: anycable/anycable-go:1.0.0-alpine

dip provision error when adding yarn key

my guess was that curl was not returning the response. that's not the case on my host system. maybe curl doesn't have the right cert. i tried adding --insecure, same behavior.

let me know if you would like any more info!

โž” dip --version
7.2.0
โž” git status -sb
## master...origin/master
โž” git log |head -n1
commit 4ebc76d63639c4672c2dfd7ff6a7869b83217b68
Step 10/16 : RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -   && echo 'deb http://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list
 ---> Running in 054868ea0cf2
Warning: apt-key output should not be parsed (stdout is not a terminal)
Segmentation fault
gpg: no valid OpenPGP data found.
ERROR: Service 'rails' failed to build : The command '/bin/sh -c curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -   && echo 'deb http://dl.yarnpkg.com/debian/ stable main' > /etc/apt/sources.list.d/yarn.list' returned a non-zero code: 2
ERROR: Command 'dip bundle install' executed with error.

May I ask how to run a single or a few tests separately?

The command

dip rspec

can run whole specs, it's great. But is there a way to run a single or a few tests separately? In my native macOS ruby dev env, I can do that just by using hotkey in editor(Vim with vim-test plugin) . This is a very high productivity way for development, I think. Hope we can do that in the dockerized mode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.