alternative server_method api
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne damit, das bestehende Verhalten von server_methods nachzuverfolgen und zu untersuchen, wie Deklarationen in app/hyperstack/models und app/models auf dem Client und dem Server geladen werden. Lege den Umfang für remote_access_to, gemeinsame Sicherheitsblöcke, nur auf dem Server vorhandene Definitionen und no_cache fest und überprüfe anschließend, dass das bestehende Verhalten der Servermethoden erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
given you have an existing model, which needs some of the methods to be defined as server_methods, it would be nice to say something like:
remote_access_to(:foo, :bar) { acting_user.admin? }
where foo and bar are existing instance methods.
or
remote_access_to(:foo, bar: 12) ...
which will give a default value of 12 to bar.
This is nice not only because it allows for existing methods to be declared as server methods without modification, but it also allows for a common security block to be provided, instead of repeating it. It also is a nicer separation of concerns.
Basic implementation is straight forward: On the client methods :foo and :bar are defined like any other server method, and will call the method with the security name prefix. On the server, the secured method calls the block, and if successfully returns true, continues on and calls the method.
There are complexities:
-
if the remote_access_to declaration is placed BEFORE the definition of foo and bar, you have to make sure that those definitions are server only. It might be possible by redefining define_method, to check for this case...
-
If foo and bar are server side only, then it would be nice if they could be declared in a file that is in app/models. This can be done by putting the server and client defs in
app/hyperstack/models, and then putting server only defs inapp/modelsand adding arequire Rails.root.join('app', 'models', 'sample.rb') unless RUBY_ENGINE == 'opal'at the start of the file, and maybe with some hacking we could make a method calledrequire_server_definitionsthat would automatically figure out the file being loaded, and then load the same file from app/models.
And a nice feature:
server_methods by default assume that they are returning a value, and thus will cache the value on the client once its retrieved. You can force a re-retrieval of the value by adding a ! to the method name. But in many cases you just want the method to be run on the server every time its called, anyway. So how about a no_cache parameter added to the server method args.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 538
- Forks
- 41
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus hyperstack-org/hyperstack
-
enhancement needs doc
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
hyperstack-org/hyperstack#359 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
hyperstack-org/hyperstack#267 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
hyperstack-org/hyperstack#457 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
hyperstack-org/hyperstack#456 ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
hyperstack-org/hyperstack#455 · 2 Kommentare ·
Alle Issues in hyperstack-org/hyperstack
Ähnliche Issues
-
bug customer-eng Durable Agents Inngest status: needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
optimization optimization:agents-md-curator
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
githubnext/gh-aw-cao#13475 ·
-
[BUG]: "Clear All" in Settings doesn't clear the saved analysis, old data comes back after reload Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
AOSSIE-Org/OrgExplorer#253 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
oxc-project/oxc#26944 ·
-
ai-observability bug team/ai-observability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100