Heroku fork -a (what's -a?) - heroku

Getting familiar with heroku fork syntax: heroku fork -a sourceapp targetapp
So I attempt to RTM:
$ heroku help fork
Usage: heroku fork [NEWNAME]
Fork an existing app -- copy config vars and Heroku Postgres data, and re-provision add-ons to a new app.
New app name should not be an existing app. The new app will be created as part of the forking process.
-s, --stack STACK # specify a stack for the new app
--region REGION # specify a region
No mention of -a flag. What does this do? Is it always required?

As of May 14, 2015 heroku fork now expects --from and --to arguments. The new documentation is much clearer.
heroku fork --from APP_TO_FORK_FROM --to APP_TO_CREATE
Original and now wrong answer with deprecated options for older version of the Heroku toolbelt:
For all heroku commands, -a or --app is the app that you you want the command to affect. The previous documentation for fork described it thusly:
heroku fork -a sourceapp targetapp
Without the '-a' flag it infers the app from the current directory or fail and ask you to specify and app or run it from an app directory.

This has changed, now the CLI expects --from and --to instead of --app.

Related

using deploy terminal heroku from file to server

problem on the photo.
when i use the git push heroku master terminal allways give me this response.
i search on google but i didn't find any qestion on my language.
i follow all codes but i see this.
heroku login
$ cd my-project/
$ git init
$ heroku git:remote -a afbchatapp
and
$ git add .
$ git commit -am "make it better"
$ git push heroku master
enter code here
What language are you using?
Let's start with the problem at the beginning. Usually, Heroku tries to automatically detect the type of app you deploy by looking for certain files that act as signatures for the language you're using. So for example if it's a NodeJS app and you're deploying from Github, Heroku will look for the package.json file in the main branch. You can find the rest of the information for other files here. You may want to look at this first.
From there this solution to an almost similar problem should be able to fix the push.

How to see files and file structure on a deployed Heroku app

My client app that is deployed on Heroku allows the user to upload images onto Heroku. I wanted to test out a change I made to delete images, so I need a way to see the state of the folder structure on Heroku to ensure the images are being deleted successfully of the file system.
I tried -
$ heroku run bash --app <appName>
~$ pwd
~$ cd <path to images folder>
but I only see images here that I uploaded along with the app, not what was uploaded through the client app.
What am I doing wrong?
I can do with this commands
heroku login
heroku run bash -a APPNAME
$ cd app
APPNAME is the name of your Heroku application And in the folder app are your files.
When you finish your commands and want to return to your terminal you can write
$ exit
Terminal access is now provided by clicking a link "More" on the top right of the Heroku dashboard where you can select "run console".
This presents an option to run terminal commands and shows a default of 'bash'. However, you do have to explicitly enter 'bash' or other command.
If you edit files, you will have to manage synchronization back to your development code using Git.
As in #Juliano Araújo's answer but from a project folder connected via git you can just run
heroku run bash
You can do this with,
heroku run bash -a APPNAME
If the above command fails,
heroku run sh -a APPNAME
`
app settings option gives our files url
`
Then use git clone
git clone https://git.heroku.com/your_app_name.git
So none of the above worked for me on windows and couldn't access my files so I decided to just clone the git repo.
git clone <git-url>

Setup heroku environment on different machine

I have two laptops, one work laptop and another personal laptop. I have setup the Heroku environment on the work laptop. In git repo I have added github as origin and heroku as separate remote. Whenever I need to deploy anything I just use heroku remote to push my changes.
Now I have already cloned my code from github and also installed heroku-toolbelt on the second laptop. Now I want to push my code and access Postgres database from second laptop. But not sure how to do it. I am able to see the app config parameter by this command.
heroku config --app <MY-APP-NAME>
But when I try to access database I am not able to do so. The pg sub-command doesn't provide --app option to specify the app name.
I tried to look into heroku fork but this command will basically create another app from an existing app. I don't want to do this.
I also looked into herku git:clone but this command will basically clone the repo. I have already cloned my repo from githu.
I am not sure how to have the same heroku enviornment as I have on my work laptop.
EDIT1
I executed the following command to add heroku remote in git config.
heroku git:remote -a <MY-APP-NAME>
So I don't need to specify the --app option to access the config. It automatically picks the right config. But I when I try to access the Postgres database it gives me following error.
>heroku pg:psql
---> Connecting to DATABASE_URL
sh: psql: command not found
This exact same command works on another laptop.
EDIT2
I figured out the problem. Actually heroku is trying to run psql on my local box but psql was not installed on my machine and hence it couldn't successfully connect to remote database. So I executed the following command to install psql and it worked like charm.
brew install postgres
First add the git remote by executing the following line.
heroku git:remote -a <MY-APP-NAME>
Then make sure your system has the postgres client installed. If it is not installed then installed it using the following command.
brew install postgres
The above command is only valid for Mac which has brew installed. You can search internet to find the specific command for your own platform.

Bored to write app name in every heroku command though I got only 1 app [duplicate]

This question already has answers here:
Is there a way to set a default app for Heroku Toolbelt?
(3 answers)
Closed 1 year ago.
Heroku toolbelt is always forcing me to write an app name at the end like this:
heroku pg:reset DATABASE --app [app_name]
Is there a way to set the default app to which all my CLI heroku commands will apply?
Going to post this just in case it helps someone else out. I had the same problem even though there was only one app installed. I had to switch my heroku remote url from https to git.
https://git.heroku.com/[heroku-app-1234].git
to
git#heroku.com:[heroku-app-1234].git
Then everything worked normally for myself.
git remote remove heroku
git remote add heroku git#heroku.com:[heroku-app-1234].git
If heroku is claiming that there are multiple apps in the folder you must have more than one remote in your .git/config.
Remove the extra heroku remote or set the default using git config heroku.remote remote_name
If you have the heroku-accounts plugin installed, switching to the heroku branch worked for me, as discussed in this answer.
To swap out your existing version of the heroku-accounts plugin, use:
heroku plugins:install https://github.com/heroku/heroku-accounts.git
Note that if you've followed #Moemars answer, you'll need to switch your git remote back to https.
If you run heroku from the Git repo linked to your Heroku app, you don't have to specify an app name (unless the repo is connected to multiple apps).
This seems to be the easiest way to fix the issue:
heroku git:remote -a <app_name>
Since this wasn't mentioned until now:
Apart from the git remote, the Heroku CLI also looks into the HEROKU_APP environment variable.
By using direnv, dotenv or similar tools for project-specific environments you can easily set the respective Heroku app for each project or directory.

heroku: bash: bundle: command not found

I am porting a Heroku app from Aspen to Cedar stack at Heroku, following their instructions.
I'm at the last deploy step. I get this error:
2012-10-22T11:23:53+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -p 40310 -e production`
2012-10-22T11:23:54+00:00 app[web.1]: bash: bundle: command not found
I can't see how I can be responsible for telling the Heroku stack where bundle is, or providing it, since bundler is used by it for exactly this job. This command is specified in the Procfile for the app:
web: bundle exec thin start -p $PORT -e $RACK_ENV
Another similar question on stackoverflow suggests that this happens if the app is pushed to Heroku without a Procfile initially, so Heroku gets the wrong idea about what kind of app it is. That poster deleted his app and created a new one and reported success. However, the effort involved in deleting and recreating my ported app is high. Is there some way I can fix this rather than start over?
Heroku's slug build process must have changed with regard to ruby 1.8.7 apps. I'm guessing they started bundling to 1.8 paths instead of 1.9.1 for 1.8 apps. My previously working app stopped working after I tried to push a new revision.
Here's what got it working again:
heroku config:add PATH=bin:vendor/bundle/1.8/bin:/usr/local/bin:/usr/bin:/bin GEM_PATH=vendor/bundle/1.8
I took these paths from a newly created app using the same git repository as I used before.
EDIT: Turns out that heroku published a devcenter article Changing Ruby Version Breaks Path that specifies paths for various ruby versions.
I had the same issue and I solved it by setting the correct heroku config variables
$ heroku config
=== xxxx Config Vars
DATABASE_URL: postgres://(...)
GEM_PATH: vendor/bundle/ruby/1.9.1
HEROKU_POSTGRESQL_CRIMSON_URL: postgres://(...)
LANG: en_US.UTF-8
PATH: bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
PGBACKUPS_URL: https://(...)
RACK_ENV: production
RAILS_ENV: production
you can create an empty rails app, push it to heroku and check the variables it automatically set, then copy (and adapt) them to your application

Resources