Deploying spree on AWS - github

I'm trying to deploy on AWS a spree application.
After setting up elastic-beanstalk and adding to
my_project/.ebextensions/ this .config file
packages:
yum:
git-core: []
container_commands:
bundle:
command: "gem install bundle"
assets:
command: "bundle exec rake assets:precompile"
db:
command: "bundle exec rake db:migrate"
leader_only: true
I use git aws.push to deploy my app, only to get this error message:
Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
double-checking on my gem set, using
bundle show rake
gives me:
... /gems/rake-10.1.0
while looking at the logfile from AWS I find this error:
sh: git: command not found
Git error: command `git clone 'https://github.com/spree/spree.git'
what am I doing wrong?

You'll need to ensure that git is installed on the server.
Try creating a file called:
.ebextensions/YOUR_APPLICATION_NAME.config
which contains
packages:
yum:
git: []
This will install git with yum as part of your deployment.
Another option is to use spree from a gem instead of sourcing it from git.
For more information, check out this article on the AWS Blog about deploying Ruby Applications to Elastic Beanstalk.

Related

vercel deployment failed: Host key verification failed

I got this error when deploying a project on vercel. I have 4 other projects hosted on vercel and never had this issue before:
warning Pattern ["ethereumjs-abi#git+https://github.com/ethereumjs/ethereumjs-abi.git"]
is trying to unpack in the same destination
"/vercel/.cache/yarn/v6/npm-ethereumjs-abi-0.6.8-ee3994657fa7a427238e6ba92a84d0b529bbcde0/node_modules/ethereumjs-abi"
as pattern ["ethereumjs-abi#^0.6.8"]. This could result in non-deterministic behavior, skipping.
error Command failed.
Exit code: 128
Command: git
Arguments: ls-remote --tags --heads ssh://git#github.com/ethereumjs/ethereumjs-abi.git
Directory: /vercel/path0
Output:
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Error: Command "yarn install" exited with 128
deleted the package-lock.json and tried it
I made sure dev dependencies are correctly separated from dependencies.
BUt still same error. I could successfully build with
npm run build
yarn build
locally.
What worked for me was deleting my git repository using:
rm -fr .git
and initializing a new repository in the same directory but this time I didn't use npm , instead used yarn. So make sure to delete package-lock.json and node modules and then run :
yarn
In your package.json you will have this dependency:
"ethereumjs-abi": "github:ethereumjs/ethereumjs-abi"
This kind of reference defaults to access github over ssh, but github have deprecated this mode of access. Instead you should use https like this:
"ethereumjs-abi": "https://github.com/ethereumjs/ethereumjs-abi"

Can't find dependencies when deploying function in google cloud build

So im trying to create a google cloud function that imports a python package called pdftotext. Now in order to pip install pdftotext you have to install some system dependencies. i.e:
sudo apt install build-essential libpoppler-cpp-dev pkg-config python3-dev
Now my solution to doing that is to create a requirements.txt and a cloudbuild.yml file that I upload to google source repositories and then use a cloud build trigger that listens to the repo, and deploys the function when something is pushed to the repo.
my cloudbuild.yml file looks like this:
steps:
# Install OS Dependencies
- name: "docker.io/library/python:3.9"
id: "OS Dependencies"
entrypoint: bash
args:
- '-c'
- |
apt-get update
apt-get install -y build-essential libpoppler-cpp-dev pkg-config python3-dev
apt-get install -y pip
pip3 install -t /workspace/lib -r requirements.txt
# Deploy Function
- name: "gcr.io/cloud-builders/gcloud"
id: "Deploy Function"
args:
[
"functions",
"deploy",
"pdf_handler",
"--entry-point",
"main",
"--source",
".",
"--runtime",
"python39",
"--memory",
"256MB",
"--service-account",
"my_service_account",
"--trigger-http",
"--timeout",
"540",
"--region",
"europe-west1",
]
options:
logging: CLOUD_LOGGING_ONLY
The trigger tries to deploy the function but i keep getting this error even though i installed the OS dependencies
"Deploy Function": pdftotext.cpp:3:10: fatal error: poppler/cpp/poppler-document.h: No such file or directory
It seems like the function deployment can't find the location where the dependencies are installed.
I've tried installing and deploying in the same step but still get the same error.
Any advice is appreciated.
Thanks in advance!
When you deploy with Cloud Functions, ONLY your code is taken and packaged (in a container) by the service.
During the packaging, another Cloud Build is called to build that container (with Buildpacks.io) and then to deploy it. That deployment doesn't care that you install some APT packages in your environment. But your /lib directory is uploaded to that new Cloud Build
You should update your requirements.txt of the Cloud Functions code that you deploy to point to the /lib directory to prevent PIP looking for external package (and compilation requirement)

Rails v6.0.0 push to Heroku fails - Rake & Bundler error msgs

This is my first attempt to push a Rails v6.0.0 app to Heroku. The error msgs are:
Could not detect rake tasks
ensure you can run `$ bundle exec rake -P` against your app
and using the production group of your Gemfile.
Activating bundler (2.0.1) failed:
Could not find 'bundler' (2.0.1) required by your /tmp/build_94b6a9e04d812c465a5480f59429532e/Gemfile.lock.
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.0.1`
Checked in 'GEM_PATH=vendor/bundle/ruby/2.5.0', execute `gem env` for more information
To install the version of bundler this project requires, run `gem install bundler -v '2.0.1'`
I can run 'bundle exec rake -P', no problem.
I have verified that bundler 2.0.1 is installed, no problem.
Suggestions?
A similar bugreport on the bundler repo mentions that bundler 2.0.1 conflicts with heroku. I've copied the following fix instructions from that comment:
gem install bundler -v 2.0.2
bundle update --bundler
commit & push Gemfile.lock changes in your repo
deploy with git push heroku master

Unable to install docker on Ubuntu server

I am unable to install docker on Ubuntu server.
The Error:
1.Failed to fetch https://download.docker.com/linux/ubuntu/dists/xenial/InRelease Unable to find expected entry 'stable/source/Sources' in Release file (Wrong sources.list entry or malformed file)
2.Failed to fetch http://ppa.launchpad.net/spring/ppa/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found
3.Some index files failed to download. They have been ignored, or old ones used instead.
My sources.list file looks like :
deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
deb-src [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
Also I am trying to install docker in virtual environment within Ubuntu server and above sources.list file in sources.list file within root folder.
I am trying to install docker as perquisite for my hyper ledger network set up?
Looks like docker doesn't have Sources. But you are looking for binaries anyway. So remove the deb-src line.
The second errormust come from a different sources.list file, check /etc/apt/sources.list.d/, too.
But both of these aren't stopping you. The missing index files will simply be ignored. They aren't stopping you from installing docker so your problem must be something else not stated in the question.
Remove all docker entries from /etc/apt/sources.list and also delete all /etc/apt/sources.list.d/docker*
Then simply use this script as root:
curl https://get.docker.com | bash
Or as user:
curl https://get.docker.com | sudo bash
Then install it via edited script (deleted docker install)
curl https://gist.githubusercontent.com/Razikus/6b61af8c69e563d587201c34f5c66568/raw/5608cdb81e33650b70ac934e261bbd5410269f7a/prereqs-ubuntu.sh | bash
According to comment, differences between original and changed:
Check diff from CLI:
diff <(curl https://hyperledger.github.io/composer/unstable/prereqs-ubuntu.sh) <(curl https://gist.githubusercontent.com/Razikus/6b61af8c69e563d587201c34f5c66568/raw/5608cdb81e33650b70ac934e261bbd5410269f7a/prereqs-ubuntu.sh)
It will be faster than searching for error

Rails 3.1 - Pushing to Heroku - Errors installing postgres adapter?

I just upgraded to Rails 3.1 and the first app i've tried to deploy to Heroku has encountered a problem relating to Postgres adapter. I'm able to push the app to heroku but then when i try to migrate the database i get the following error:
heroku rake db:migrate
rake aborted!
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter`
(pg is not part of the bundle. Add it to Gemfile.)
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)
when I try their suggested install i get:
ERROR: Could not find a valid gem 'activerecord-postgresql-adapter' (>= 0) in any repository
ERROR: Possible alternatives: activerecord-postgis-adapter, activerecord-jdbcpostgresql-adapter, activerecord-postgresql-cursors, activerecord-jdbcmysql-adapter, activerecord-jdbcmssql-adapter
which already seems weird... so what exact gem should I install to get this thing working if not what they say I should install??
When I try installing gem pg i get:
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/jerometufte/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
...
I'm using SQLite3 currently. Any help greatly appreciated, this is baffling me.
Option 1:
Add pg to your Gemfile but skip trying to install it locally.
$ cat Gemfile
...
group :production do
# gems specifically for Heroku go here
gem "pg"
end
# Skip attempting to install the pg gem
$ bundle install --without production
Option 2 (Debian/Ubuntu):
Add pg to your Gemfile but first install the prerequisites.
$ cat Gemfile
...
group :production do
# gems specifically for Heroku go here
gem "pg"
end
# Install the pg gem's dependencies first
$ sudo apt-get install libpq-dev
# Then install the pg gem along with all the other gems
$ bundle install
You definitely need pg in the Gemfile for Heroku.
About the error you're getting locally: make sure you have postgres installed, run gem install pq -- --with-pg-config=[path to wherever your pg-config binary is], then bundle install.
Alternatively, if your local database is working fine (either because you're using sqlite or postgres-pr), you could put the gem 'pg' line in your Gemfile in a group called production, then bundle install --without production locally.
More up-to-date info: It had something to do with a different version of pg gem locally.
I already had pg in a production group (I run sqllite locally), but Heroku was still puking.
The problem went away for my new Rails 3.1 app when I:
rm Gemfile.lock
touch Gemfile
bundle install
git add .
git commit -am "wiped Gemfile.lock re-ran bundle install"
git push heroku master
worked like a charm when I then ran heroku run rake db:migrate